AlgoDS

Implementation of Algorithms and Data Structures, Problems and Solutions

3429
610
Java

English | 简体中文

算法与数据结构

这是 一份 算法和数据结构面试题目(附解答)的集合。
该仓库包含了我对常见算法的解答和用 Java实现的数据结构。
创建该仓库用于学习更多的算法,并持续添加问题和解答。
到目前为止,已经包含了 算法和数据结构超过250个问题和答案

简述

根据困难程度将问题分为三个等级:

  1. 简单问题答案
  2. 中等问题答案
  3. 困难问题答案

问题

数组

  1. Rotate Array:旋转数组
  2. Contains Duplicate:包含重复值
  3. Find Peak Element:寻找最大值
  4. Maximum Subarray:最大子数列(子串和)
  5. Kth Largest Element in an Array:数组中的第K大元素
  6. Find All Duplicates in an Array:寻找数组中的全部重复元素
  7. Longest Increasing Subsequence:最长递增子序列
  8. Rotate Image, matrix:旋转图像,矩阵
  9. Shuffle an Array:数组洗牌
  10. Find Min in Rotated Array:寻找旋转排序数组中的最小值
  11. Search in Rotated Array:在旋转数组中查找

链表

  1. Singly Linked List Implementation: 单向链表实现
  2. Doubly Linked List Implementation:双向链表实现
  3. Delete Node in a Linked List:删除链表节点
  4. Palindrome Linked List:回文链表
  5. Reverse Linked List:反转链表
  6. Intersection of Two Linked Lists:两链表的交叉点
  7. Linked List Cycle:带环链表
  8. Remove Nth Node From End of List:删除链表中倒数第n个节点
  9. Merge Sort List:合并有序链表
  10. Find Linked List Cycle:寻找带环链表
  11. Merge k Sorted Lists: 合并k个排序链表
    And many other Linked list problems:其余有关链表的题目

二叉树

  1. Binary Tree Level Order Traversal:二叉树的层次遍历
  2. Sum of Left Leaves:左叶子节点的和
  3. Invert Binary Tree:反转二叉树
  4. Binary Search Tree Iterator:二叉搜索树迭代器
  5. Binary Tree Postorder Traversal:二叉树后续遍历
  6. Binary Tree Preorder Traversal:二叉树前序遍历
  7. Flatten Binary Tree to Linked List:二叉树转换成链表
  8. Symmetric Tree:对称树
  9. Binary Tree Inorder Traversal:二叉树中序遍历
  10. Same Tree:相同树
  11. Maximum Depth of Binary Tree:二叉树的最大深度
  12. Balanced Binary Tree:平衡二叉树
  13. Minimum Depth of Binary Tree:二叉树的最小深度
  14. Sorted List to Balanced Binary Search Tree:有序链表转换平衡二叉查找树
  15. Validate Binary Search Tree:验证二叉搜索树
  16. Sorted Array to Balanced BST :有序数组转换二叉查找树
  17. Kth Smallest Element in a BST:二叉搜索树的第k小元素
  18. Binary Tree Zigzag Level Order Traversal:二叉树的锯齿形层次遍历
  19. Delete Node in a BST:删除二叉查找树的节点
  20. Lowest Common Ancestor of BST:二叉查找树最近公共祖先
  21. Binary Tree Left Side View:二叉树的左侧视图
  22. Binary Tree Right Side View:二叉树的右侧视图
  23. Mode in BST:二叉查找树的模式
  24. Most Frequent Subtree Sum:最常出现的子树和
  25. Find Largest Element in Each Row:寻找每行的最大元素
  26. Serialize and Deserialize BT:二叉树的序列化和反序列化
    And many other tree problems:其余有关树的问题

数学

  1. Integer Break:整数分解
  2. Reverse Bits:反转位
  3. Palindrome Number:回文数
  4. Math.pow:幂
  5. Jug and Water Problem:水罐问题
  6. Sieve of Eratosthenes:埃拉托斯特尼筛法
  7. Fermat’s primality:费马素数
  8. Evaluate Reverse Polish Notation:计算逆波兰波表达式

栈和队列

  1. Min Stack:最小栈
  2. Min Queue:最小队列
  3. Implement Stack Using Queue:用队列实现栈
  4. Implement Queue Using Stack:用栈实现队列
  5. Sort Stack:有序栈

动态规划问题

  1. Fibonacci Numbers:斐波那契数列
  2. Word Break:单词分割
  3. Subset Sum:子集和问题
  4. 0/1 Knapsack Problem:0/1背包问题
  5. Shortest Palindrome (KMP):最短回文串
  6. Minimum Square Sum:最小平方和
  7. Maximum weight transformation of a String:字符串的最大重量转换
  8. Coin Change:硬币找零

混合问题

  1. Union Find:并查集
  2. Permutations:排列组合
  3. Subsets:子集问题

算法

排序和查找

  1. Bubble Sort:冒泡排序
  2. Insertion Sort:插入排序
  3. Selection Sort:选择排序
  4. Counting Sort:计数排序
  5. Binary Search , Lower & Upper Bounds:二分查找,上下界
  6. MergeSort:归并排序
  7. QuickSort:快速排序

  1. Breadth First Search (BFS):广度优先遍历
  2. Depth First Search (DFS):深度优先遍历
  3. Prim’s Minimum Spanning Tree (MST):最小生成树(Prim’s算法)
  4. KrusKal’s Minimum Spanning Tree (MST):最小生成树(KrusKal’s算法)
  5. Topological Sorting:拓扑排序
  6. Shortest Path Dijsktra:Dijsktra最短路径
  7. Shortest Path Bellman-Ford:Bellman-Ford最短路径
  8. A* Heuristic Path Finding:启发式搜索A*算法
  9. Is Graph Bipartite:二分图判断
  10. Is Graph Connected:连通图判断
  11. Cycle Detection:周期检测
  12. Undirected Graph Bridge Detection:无向图的桥梁检测

字符串

  1. Rabin Karp Subsequence search:Rabin Karp子序列搜索
  2. Ransom Note:勒索信
  3. Reverse String:反转字符串
  4. Longest Common Prefix:最长公共前缀
  5. Is Anagram:回文字符串
  6. Needle and Haystack:针和草堆
  7. Word Break:单词分割
  8. Meta Strings:元字符串

数据结构

  1. Binary Search Tree (recursive):二叉查找树(递归)
  2. Binary Search Tree (iterative):二叉查找树(迭代)
  3. AVL Tree:平衡二叉查找树(BBST)
  4. Trie (Prefix tree):字典树、前缀树(Prefix Tree)、单词查找树 或 键树
  5. Hashed Array Tree:散列数组树
  6. LRU Cache:最近最少使用缓存

贡献

发现bug?另一种更好的方法?请提交PR。