# | English Title | Chinese Title | Solution |
---|---|---|---|
1 | InB_ArrayAndNotInA_Array | 找出在数组 B 中而不在数组 A 中的数 | Java |
2 | BubbleSort | 冒泡排序 | Java |
3 | SelectionSort | 选择排序 | Java |
4 | InsertionSort | 插入排序 | Java |
5 | Recursive | 递归 | Java |
6 | MergeSort | 归并排序 | Java |
7 | SmallSum | 小和问题 | Java |
8 | ArrayDivision | 数组划分问题 | Java |
9 | NetherlandsFlag | 荷兰国旗问题 | Java |
10 | QuickSort | 快速排序 | Java |
11 | HeapSort | 堆排序 | Java |
12 | BucketSort | 桶排序 | Java |
13 | ArrayStack | 用数组实现固定的栈 | Java |
14 | ArrayQueue | 用数组实现固定的队列 | Java |
16 | StackAndQueueConvert | 栈与队列相互实现 | Java |
17 | PrintMatrixSpiralOrder | 顺时针打印矩阵 | Java |
18 | RotateMatrix | 将正方形顺时针旋转 90° | Java |
19 | ReverseList | 反转单向链表和双向链表 | Java |
20 | ZigZagPrintMatrix | 之字形打印矩阵 | Java |
21 | FindNumInSortedMatrix | 在排好序的矩阵中找到指定的数 | Java |
22 | IsPalindromeList | 判断一个链表是否是回文结构 | Java |
23 | SmallerEqualBiggerInList | 根据给定的值划分单向链表 | Java |
25 | FindFirstIntersectNode | 两个单链表相交的一系列问题 | Java |
26 | PreInPosTraversal | 二叉树的先序、中序、后序、层次遍历(递归与非递归) | Java |
27 | IsBinarySearchTree | 判断一棵树是否是二叉搜索树 | Java |
28 | IsCompleteBinaryTree | 判断一棵树是否是完全二叉树 | Java |
29 | CompleteBinaryTreeNodeNumber | 求完全二叉树节点的个数 | Java |
30 | HashMap | 哈希表的基本使用 | Java |
31 | RandomPool | 实现 RandomPool | Java |
32 | UnionFind | 并查集的查找与合并操作 | Java |
33 | Islands | 岛问题 | Java |
34 | TrieTree | 前缀树 | Java |
35 | LowestLexicography | 字典序最小的字符串 | Java |
36 | LessMoney | 分割金条的最小代价 | Java |
37 | MaximizedCapital | 项目的最大钱数 | Java |
38 | BestArrange | 最多的宣讲场次 | Java |
39 | Factorial | 求 n 的阶乘 | Java |
40 | TowerOfHanoi | 汉诺塔问题 | Java |
41 | PrintAllSubsquences | 打印一个字符串的全部子序列 | Java |
42 | CowNumber | 母牛生崽问题 | Java |
43 | MinPathInMatrix | 矩阵中的最小路径和 | Java |
44 | IsAimValueInArray | 数组中的数累加起来等于目标值 | Java |
45 | 0-1 Knapsack Problem | 0-1 背包问题 | Java |
46 | 0-1 Knapsack Problem Optimizes | 0-1 背包问题的优化 | Java |
47 | Completeness Knapsack Problem | 完全背包问题 | Java |
48 | Shortest Path Problem | 最短路径问题 | Java |
# | English Title | Chinese Title | Solution |
---|---|---|---|
1 | KMP | 字符串匹配算法 | Java |
2 | ShortestContainTwiceOriginalString | 包含两次原始字符串的最短字符串 | Java |
3 | T1SubtreeEqualsT2 | 树中是否有一棵子树与给定的树对应 | Java |
4 | Manacher | 字符串的最长回文子串 | Java |
5 | ShortestEnd | 在字符串后添加字符变成回文串 | Java |
6 | BFPRT | 找到前 K 小的数或前 K 大的数 | Java |
7 | MaxWindow | 生成窗口最大值数组 | Java |
8 | AllLessNumSubArray | 最大值减去最小值小于等于 num 的子数组数量 | Java |
9 | GetMaxTree | 得到满足条件的最大二叉树 | Java |
10 | MaxRecSize | 求最大子矩阵的大小 | Java |
11 | MountainsAndFalme | 可见的山峰对的数量 | Java |
12 | MorrisTraversal | Morris 前中后遍历 | Java |
13 | BuildingOutline | 天际线问题 | Java |
14_01 | LongestSumSubArrayLength | 累加和等于 k 的最长子数组的长度(正数、负数、零) | Java |
14_02 | LongestSumSubArrayLength | 累加和等于 k 的最长子数组的长度(全是正数) | Java |
14_03 | LongestSumSubArrayLength | 累加和小于等于 k 的最长子数组的长度(正数、负数、零) | Java |
15 | MostEOR | 数组中的异或和为 0 的最多划分 | Java |
16 | BiggestSubBSFInTree | 构建最大搜索二叉子树 | Java |
17 | MaxDistanceInTree | 二叉树上的最远距离 | Java |
18 | MaxHappy | 最大的活跃值 | Java |
19 | LRU | 最近最少使用 | Java |
20 | MaxEOR | 子数组的最大异或和 | Java |
21 | MaxCoinsWayAmount | 最多的换钱方法 | Java |
22 | RegularExpressionMatch | 正则匹配问题 | Java |
23 | RotateString | 旋转字符串 | Java |
24 | QueryBox | 查询给定范围内的个数 | Java |
25 | ReversePair | 求解符合要求的逆序数组 | Java |
26 | changeString | 整体交换字符串(同 23 题) | Java |
27 | LongestSubstring | 最长公共字串的长度 | Java |
# | English Title | Chinese Title | Solution |
---|---|---|---|
3 | FindDuplicationInArray | 数组中重复的数字 | Java |
4 | FindInPartiallySortedMatrix | 二维数组中的查找 | Java |
5 | ReplaceSpaces | 替换空格 | Java |
6 | PrintListInReversedOrder | 从尾到头打印链表 | Java |
7 | ConstructBinaryTree | 重建二叉树 | Java |
8 | NextNodeInBinaryTrees | 二叉树的下一个结点 | Java |
9 | QueueWithTwoStacks | 用两个栈实现队列 | Java |
10_01 | Fibonacci | 斐波那契数列 | Java |
10_02 | Climbing Stairs | 爬楼梯 | Java |
10_03 | Climbing StairsⅡ | 爬楼梯Ⅱ | Java |
11_01 | MinNumberInRotatedArray | 旋转数组的最小数字 | Java |
11_02 | MinNumberInRotatedArray Ⅱ | 旋转数组的最小数字 Ⅱ | Java |
12 | StringPathInMatrix | 矩阵中的路径 | Java |
13 | RobotMove | 机器人的运动范围 | Java |
14_01 | CuttingRope | 剪绳子 | Java |
14_02 | CuttingRope Ⅱ | 剪绳子Ⅱ | Java |
15 | NumberOf1InBinary | 二进制中 1 的个数 | Java |
16 | Power | 数值的整数次方 | Java |
17 | Print1ToMaxOfNDigits | 打印从 1 到最大的 n 位数 | Java |
18_01 | DeleteNodeInList | 在 O(1) 时间内删除链表节点 | Java |
18_02 | DeleteDuplicatedNode | 删除链表中重复的结点 | Java |
18_03 | DeleteDuplicatedNodeⅡ | 删除链表中重复的结点Ⅱ | Java |
19 | RegularExpressionsMatching | 正则表达式匹配 | Java |
20 | NumericStrings | 表示数值的字符串 | Java |
21 | ReorderArray | 调整数组顺序使奇数位于偶数前面 | Java |
22 | KthNodeFromEnd | 链表中倒数第 K 个结点 | Java |
23 | EntryNodeInListLoop | 链表中环的入口结点 | Java |
24 | ReverseList | 反转链表 | Java |
25 | MergeSortedLists | 合并两个排序的链表 | Java |
26 | SubstructureInTree | 树的子结构 | Java |
27 | MirrorOfBinaryTree | 二叉树的镜像 | Java |
28 | SymmetricalBinaryTree | 对称的二叉树 | Java |
29 | PrintMatrix | 顺时针打印矩阵 | Java |
30 | MinInStack | 包含 min 函数的栈 | Java |
31 | StackPushPopOrder | 栈的压入、弹出序列 | Java |
32_01 | PrintTreeFromTopToBottom | 不分行从上往下打印二叉树 | Java |
32_02 | PrintTreesInLines | 分行从上往下打印二叉树 | Java |
32_03 | PrintTreesInZigzag | 之字形打印二叉树 | Java |
33 | VerifySquenceOfBST | 二叉搜索树的后序遍历序列 | Java |
34 | PathInTree | 二叉树中和为某一值的路径 | Java |
35 | CopyComplexList | 复杂链表的复制 | Java |
36 | ConvertBinarySearchTree | 二叉搜索树与双向链表 | Java |
37 | SerializeBinaryTrees | 序列化二叉树 | Java |
38 | StringPermutation | 字符串的排列 | Java |
39 | MoreThanHalfNumber | 数组中出现次数超过一半的数字 | Java |
40 | KLeastNumbers | 最小的 K 个数 | Java |
41_01 | StreamMedian | 数据流中的中位数 | Java |
41_02 | FirstAppearingOnce | 字符流中第一个不重复的字符 | Java |
42 | GreatestSumOfSubarrays | 连续子数组的最大和 | Java |
43 | NumberOf1Between1AndN | 从 1 到 n 整数中 1 出现的次数 | Java |
44 | DigitsInSequence | 数字序列中某一位的数字 | Java |
45 | SortArrayForMinNumber | 把数组排成最小的数 | Java |
46 | TranslateNumbersToStrings | 把数字翻译成字符串 | Java |
47 | MaxValueOfGifts | 礼物的最大价值 | Java |
48 | LongestSubstringWithoutDup | 最长不含重复字符的子字符串 | Java |
49 | UglyNumber | 丑数 | Java |
50 | FirstNotRepeatingChar | 第一个只出现一次的字符位置 | Java |
51 | InversePairs | 数组中的逆序对 | Java |
52 | FirstCommonNodesInLists | 两个链表的第一个公共结点 | Java |
53_01 | NumberOfK | 数字在排序数组中出现的次数 | Java |
53_02 | MissingNumber | 0~n-1 中缺失的数字 | Java |
53_03 | IntegerIdenticalToIndex | 数组中数值和下标相等的元素 | Java |
54 | KthNodeInBST | 二叉搜索树的第 K 大结点 | Java |
55_01 | TreeDepth | 二叉树的深度 | Java |
55_02 | BalancedBinaryTree | 平衡二叉树 | Java |
56_01 | NumbersAppearOnce | 数组中只出现一次的两个数字 | Java |
56_02 | NumberAppearingOnce | 数组中唯一只出现一次的数字 | Java |
57_01 | TwoNumbersWithSum | 和为 S 的两个数字 | Java |
57_02 | ContinuousSquenceWithSum | 和为 S 的连续正数序列 | Java |
58_01 | ReverseWordsInSentence | 翻转单词顺序列 | Java |
58_02 | LeftRotateString | 左旋转字符串 | Java |
59_01 | MaxInSlidingWindow | 滑动窗口的最大值 | Java |
59_02 | MaxInQueue | 队列的最大值 | Java |
60 | DicesProbability | n 个骰子的点数 | Java |
61 | ContinousCards | 扑克牌中的顺子 | Java |
62 | LastNumberInCircle | 圆圈中最后剩下的数字 | Java |
63 | MaximalProfit | 股票的最大利润 | Java |
64 | Accumulate | 求 1+2+3+...+n | Java |
65 | AddTwoNumbers | 不用加减乘除做加法 | Java |
66 | ConstuctArray | 构建乘积数组 | Java |
67 | StringToInt | 把字符串转换成整数 | Java |
68_01 | LowestCommonAncestorInBST | 二叉搜索树的最近公共祖先 | Java |
68_02 | LowestCommonAncestor | 二叉树的最近公共祖先 | Java |
按照不同类别进行分类,参考自 CyC2018/CS-Notes、LeetCode 分类顺序表。
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
3 | Longest Substring Without Repeating Characters | 无重复字符的最长子串 | Java | Medium |
11 | Container With Most Water | 盛最多水的容器 | Java | Medium |
15 | 3Sum | 三数之和 | Java | Medium |
16 | 3Sum Closest | 最接近的三数之和 | Java | Medium |
18 | 4Sum | 四数之和 | Java | Medium |
42 | Trapping Rain Water | 接雨水 | Java | Hard |
76 | Minimum Window Substring | 最小覆盖子串 | Java | Hard |
88 | Merge Sorted Array | 合并两个有序数组 | Java | Easy |
125 | Valid Palindrome | 验证回文串 | Java | Easy |
141 | Linked List Cycle | 环形链表 | Java | Easy |
167 | Two Sum Ⅱ | 两数之和 Ⅱ - 输入有序数组 | Java | Easy |
209 | Minimum Size Subarray Sum | 长度最小的子数组 | Java | Medium |
345 | Reverse Vowels of a String | 反转字符串中的元音字母 | Java | Easy |
415 | Add Strings | 字符串相加 | Java | Easy |
524 | Longest Word in Dictionary through Deleting | 通过删除字母匹配到字典里最长单词 | Java | Medium |
633 | Sum of Square Numbers | 平方数之和 | Java | Easy |
680 | Valid Palindrome Ⅱ | 验证回文字符串 Ⅱ | Java | Easy |
922 | Sort Array By Parity Ⅱ | 按奇偶排序数组 Ⅱ | Java | Easy |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
45 | Jump GameⅡ | 跳跃游戏Ⅱ | Java | Medium |
53 | Maximum Subarray | 最大子数组和 | Java | Easy |
55 | Jump Game | 跳跃游戏 | Java | Medium |
121 | Best Time to Buy and Sell Stock | 买卖股票的最佳时机 | Java | Easy |
122 | Best Time to Buy and Sell Stock Ⅱ | 买卖股票的最佳时机 Ⅱ | Java | Easy |
392 | Is Subsequence | 判断是否是子序列 | Java | Medium |
406 | Queue Reconstruction by Height | 根据身高重建队列 | Java | Medium |
435 | Non-overlapping Intervals | 无重叠区间 | Java | Medium |
452 | Minimum Number of Arrows to Burst Balloons | 用最少数量的箭引爆气球 | Java | Medium |
455 | Assign Cookies | 分配饼干 | Java | Medium |
605 | Can Place Flowers | 种花问题 | Java | Easy |
665 | Non-decreasing Array | 非递减数列 | Java | Easy |
763 | Partition Labels | 划分字母区间 | Java | Medium |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
95 | Unique Binary Search Trees Ⅱ | 不同的二叉搜索树 Ⅱ | Java | Medium |
241 | Different Ways to Add Parentheses | 为运算表达式设计优先级 | Java | Medium |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
75 | Sort Colors | 颜色分类 | Java | Medium |
215 | Kth Largest Element in an Array | 数组中的第 K 个最大元素 | Java | Medium |
327 | Count of Range Sum | 区间和的个数 | Java | Hard |
347 | Top K Frequent Elements | 前 K 个高频元素 | Java | Medium |
451 | Sort Character sBy Frequency | 根据字符出现频率排序 | Java | Medium |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
17 | Letter Combinations of a Phone Number | 电话号码的字母组合 | TODO | Medium |
31 | Next Permutation | 下一个排列 | TODO | Medium |
39 | Combination Sum | 组合总和 | TODO | Medium |
40 | Combination Sum II | 组合总和 II | TODO | Medium |
46 | Permutations | 全排列 | TODO | Medium |
47 | Permutations II | 全排列 II | TODO | Medium |
60 | Permutation Sequence | 排列序列 | TODO | Hard |
77 | Combinations | 组合 | TODO | Medium |
78 | Subsets | 子集 | TODO | Medium |
90 | Subsets II | 子集 II | TODO | Medium |
93 | Restore IP Addresses | 复原 IP 地址 | TODO | Medium |
140 | Word Break II | 单词拆分 II | TODO | Hard |
216 | Combination Sum III | 组合总和 III | TODO | Medium |
254 | Factor Combinations | 因子的组合 | TODO | Medium |
282 | Expression Add Operators | 给表达式添加运算符 | TODO | Hard |
291 | Word Pattern II | 单词规律 II | TODO | Hard |
320 | Generalized Abbreviation | 列举单词的全部缩写 | TODO | Medium |
351 | Android Unlock Patterns | 安卓系统手势解锁 | TODO | Medium |
377 | Combination Sum IV | 组合总和 IV | TODO | Medium |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
138 | Copy List with Random Pointer | 复制带随机指针的链表 | TODO | Medium |
380 | Insert Delete GetRandom O(1) | O(1) 时间插入、删除和获取随机元素 | TODO | Medium |
381 | Insert Delete GetRandom O(1) - Duplicates allowed | O(1) 时间插入、删除和获取随机元素 - 允许重复 | TODO | Hard |
382 | Linked List Random Node | 链表随机节点 | TODO | Medium |
384 | Shuffle an Array | 打乱数组 | TODO | Medium |
398 | Random Pick Index | 随机数索引 | TODO | Medium |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
261 | Graph Valid Tree | 以图判树 | TODO | Medium |
305 | Number of Islands II | 岛屿数量 II | TODO | Hard |
323 | Number of Connected Components in an Undirected Graph | 无向图中连通分量的数目 | TODO | Medium |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
208 | Implement Trie (Prefix Tree) | 实现 Trie (前缀树) | TOOD | Medium |
211 | Design Add and Search Words Data Structure | 添加与搜索单词 - 数据结构设计 | TODO | Medium |
212 | Word Search II | 单词搜索 II | TODO | Hard |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
1 | Two Sum | 两数之和 | Java | Easy |
49 | Group Anagrams | 字母异位词分组 | Java | Medium |
128 | Longest Consecutive Sequence | 最长连续序列 | Java | Medium |
217 | Contains Duplicate | 存在重复元素 | Java | Easy |
560 | Subarray Sum Equals K | 和为 K 的子数组 | Java | Medium |
594 | Longest Harmonious Subsequence | 最长和谐子序列 | Java | Easy |
692 | Top K Frequent Words | 前 K 个高频单词 | Java | Medium |
974 | Subarray Sums Divisible by K | 和可被 K 整除的子数组 | Java | Medium |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
133 | Clone Graph | 克隆图 | TODO | Medium |
149 | Max Points on a Line | 直线上最多的点数 | TODO | Hard |
207 | Course Schedule | 课程表 | Java | Medium |
210 | Course Schedule Ⅱ | 课程表 Ⅱ | Java | Medium |
223 | Rectangle Area | 矩形面积 | TODO | Medium |
310 | Minimum Height Trees | 最小高度树 | TODO | Medium |
335 | Self Crossing | 路径交叉 | TODO | Hard |
356 | Line Reflection | 直线镜像 | TODO | Medium |
391 | Perfect Rectangle | 完美矩形 | TODO | Hard |
399 | Evaluate Division | 除法求值 | TODO | Medium |
785 | Is Graph Bipartite? | 判断二分图 | Java | Medium |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
89 | Gray Code | 格雷编码 | TODO | Medium |
136 | Single Number | 只出现一次的数字 | TODO | Easy |
137 | Single Number II | 只出现一次的数字 II | TODO | Medium |
190 | Reverse Bits | 颠倒二进制位 | TODO | Easy |
191 | Number of 1 Bits | 位 1 的个数 | TODO | Easy |
201 | Bitwise AND of Numbers Range | 数字范围按位与 | TODO | Medium |
260 | Single Number III | 只出现一次的数字 III | TODO | Medium |
268 | Missing Number | 丢失的数字 | TODO | Easy |
318 | Maximum Product of Word Lengths | 最大单词长度乘积 | TODO | Medium |
338 | Counting Bits | 比特位计数 | TODO | Easy |
371 | Sum of Two Integers | 两整数之和 | TODO | Medium |
389 | Find the Difference | 找不同 | TODO | Easy |
393 | UTF-8 Validation | UTF-8 编码验证 | TODO | Medium |
1356 | Sort Integers by The Number of 1 Bits | 根据数字二进制下 1 的数目排序 | Java | Easy |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
207 | Course Schedule | 课程表 | TODO | Medium |
210 | Course Schedule II | 课程表 II | TODO | Medium |
269 | Alien Dictionary | 火星词典 | TODO | Hard |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
146 | LRU Cache | LRU 缓存 | TODO | Medium |
170 | Two Sum III - Data structure design | 两数之和 III - 数据结构设计 | TODO | Easy |
251 | Flatten 2D Vector | 展开二维向量 | TODO | Medium |
281 | Zigzag Iterator | 锯齿迭代器 | TODO | Medium |
284 | Peeking Iterator | 顶端迭代器 | TODO | Medium |
288 | Unique Word Abbreviation | 单词的唯一缩写 | TODO | Medium |
303 | Range Sum Query - Immutable | 区域和检索 - 数组不可变 | TODO | Easy |
304 | Range Sum Query 2D - Immutable | 二维区域和检索 - 矩阵不可变 | TODO | Medium |
307 | Range Sum Query - Mutable | 区域和检索 - 数组可修改 | TODO | Medium |
308 | Range Sum Query 2D - Mutable | 二维区域和检索 - 可变 | TODO | Hard |
346 | Moving Average from Data Stream | 数据流中的移动平均值 | TODO | Easy |
348 | Design Tic-Tac-Toe | 设计井字棋 | TODO | Medium |
353 | Design Snake Game | 贪吃蛇 | TODO | Medium |
355 | Design Twitter | 设计推特 | TODO | Medium |
359 | Logger Rate Limiter | 日志速率限制器 | TODO | Easy |
362 | Design Hit Counter | 敲击计数器 | TODO | Medium |
379 | Design Phone Directory | 电话目录管理系统 | TODO | Medium |