English | 简体中文
这是 一份 算法和数据结构 和 面试题目(附解答)的集合。
该仓库包含了我对常见算法的解答和用 Java
实现的数据结构。
创建该仓库用于学习更多的算法,并持续添加问题和解答。
到目前为止,已经包含了 算法和数据结构 和 超过250个问题和答案。
根据困难程度将问题分为三个等级:
- Rotate Array:旋转数组
- Contains Duplicate:包含重复值
- Find Peak Element:寻找最大值
- Maximum Subarray:最大子数列(子串和)
- Kth Largest Element in an Array:数组中的第K大元素
- Find All Duplicates in an Array:寻找数组中的全部重复元素
- Longest Increasing Subsequence:最长递增子序列
- Rotate Image, matrix:旋转图像,矩阵
- Shuffle an Array:数组洗牌
- Find Min in Rotated Array:寻找旋转排序数组中的最小值
- Search in Rotated Array:在旋转数组中查找
- Singly Linked List Implementation: 单向链表实现
- Doubly Linked List Implementation:双向链表实现
- Delete Node in a Linked List:删除链表节点
- Palindrome Linked List:回文链表
- Reverse Linked List:反转链表
- Intersection of Two Linked Lists:两链表的交叉点
- Linked List Cycle:带环链表
- Remove Nth Node From End of List:删除链表中倒数第n个节点
- Merge Sort List:合并有序链表
- Find Linked List Cycle:寻找带环链表
- Merge k Sorted Lists: 合并k个排序链表
And many other Linked list problems:其余有关链表的题目
- Binary Tree Level Order Traversal:二叉树的层次遍历
- Sum of Left Leaves:左叶子节点的和
- Invert Binary Tree:反转二叉树
- Binary Search Tree Iterator:二叉搜索树迭代器
- Binary Tree Postorder Traversal:二叉树后续遍历
- Binary Tree Preorder Traversal:二叉树前序遍历
- Flatten Binary Tree to Linked List:二叉树转换成链表
- Symmetric Tree:对称树
- Binary Tree Inorder Traversal:二叉树中序遍历
- Same Tree:相同树
- Maximum Depth of Binary Tree:二叉树的最大深度
- Balanced Binary Tree:平衡二叉树
- Minimum Depth of Binary Tree:二叉树的最小深度
- Sorted List to Balanced Binary Search Tree:有序链表转换平衡二叉查找树
- Validate Binary Search Tree:验证二叉搜索树
- Sorted Array to Balanced BST :有序数组转换二叉查找树
- Kth Smallest Element in a BST:二叉搜索树的第k小元素
- Binary Tree Zigzag Level Order Traversal:二叉树的锯齿形层次遍历
- Delete Node in a BST:删除二叉查找树的节点
- Lowest Common Ancestor of BST:二叉查找树最近公共祖先
- Binary Tree Left Side View:二叉树的左侧视图
- Binary Tree Right Side View:二叉树的右侧视图
- Mode in BST:二叉查找树的模式
- Most Frequent Subtree Sum:最常出现的子树和
- Find Largest Element in Each Row:寻找每行的最大元素
- Serialize and Deserialize BT:二叉树的序列化和反序列化
And many other tree problems:其余有关树的问题
- Integer Break:整数分解
- Reverse Bits:反转位
- Palindrome Number:回文数
- Math.pow:幂
- Jug and Water Problem:水罐问题
- Sieve of Eratosthenes:埃拉托斯特尼筛法
- Fermat's primality:费马素数
- Evaluate Reverse Polish Notation:计算逆波兰波表达式
- Min Stack:最小栈
- Min Queue:最小队列
- Implement Stack Using Queue:用队列实现栈
- Implement Queue Using Stack:用栈实现队列
- Sort Stack:有序栈
- Fibonacci Numbers:斐波那契数列
- Word Break:单词分割
- Subset Sum:子集和问题
- 0/1 Knapsack Problem:0/1背包问题
- Shortest Palindrome (KMP):最短回文串
- Minimum Square Sum:最小平方和
- Maximum weight transformation of a String:字符串的最大重量转换
- Coin Change:硬币找零
- Bubble Sort:冒泡排序
- Insertion Sort:插入排序
- Selection Sort:选择排序
- Counting Sort:计数排序
- Binary Search , Lower & Upper Bounds:二分查找,上下界
- MergeSort:归并排序
- QuickSort:快速排序
- Breadth First Search (BFS):广度优先遍历
- Depth First Search (DFS):深度优先遍历
- Prim's Minimum Spanning Tree (MST):最小生成树(Prim's算法)
- KrusKal's Minimum Spanning Tree (MST):最小生成树(KrusKal's算法)
- Topological Sorting:拓扑排序
- Shortest Path Dijsktra:Dijsktra最短路径
- Shortest Path Bellman-Ford:Bellman-Ford最短路径
- A* Heuristic Path Finding:启发式搜索A*算法
- Is Graph Bipartite:二分图判断
- Is Graph Connected:连通图判断
- Cycle Detection:周期检测
- Undirected Graph Bridge Detection:无向图的桥梁检测
- Rabin Karp Subsequence search:Rabin Karp子序列搜索
- Ransom Note:勒索信
- Reverse String:反转字符串
- Longest Common Prefix:最长公共前缀
- Is Anagram:回文字符串
- Needle and Haystack:针和草堆
- Word Break:单词分割
- Meta Strings:元字符串
- Binary Search Tree (recursive):二叉查找树(递归)
- Binary Search Tree (iterative):二叉查找树(迭代)
- AVL Tree:平衡二叉查找树(BBST)
- Trie (Prefix tree):字典树、前缀树(Prefix Tree)、单词查找树 或 键树
- Hashed Array Tree:散列数组树
- LRU Cache:最近最少使用缓存
发现bug?另一种更好的方法?请提交PR。