# | 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 |
# | 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 |
# | 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 。
# | 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 |
42 | Trapping Rain Water | 接雨水 | Java | Hard |
76 | Minimum Window Substring | 最小覆盖子串 | Java | Hard |
88 | Merge Sorted Array | 合并两个有序数组 | Java | Easy |
141 | Linked List Cycle | 环形链表 | Java | Easy |
167 | Two Sum Ⅱ | 两数之和 Ⅱ - 输入有序数组 | Java | Easy |
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 |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
45 | Jump GameⅡ | 跳跃游戏Ⅱ | Java | Hard |
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 |
---|---|---|---|---|
33 | Search in Rotated Sorted Array | 搜索旋转排序数组 | Java | Medium |
34 | Find First and Last Position of Element in Sorted Array | 在排序数组中查找元素的第一个和最后一个位置 | Java | Medium |
69 | Sqrt(x) | x 的平方根 | Java | Easy |
153 | Find Minimum in Rotated Sorted Array | 旋转数组的最小数字 | Java | Medium |
278 | First Bad Version | 第一个错误的版本 | Java | Easy |
287 | Find the Duplicate Number | 寻找重复数 | Java | Medium |
540 | Single Element in a Sorted Array | 有序数组中的单一元素 | Java | Medium |
744 | Find Smallest Letter Greater Than Target | 寻找比目标字母大的最小字母 | Java | Easy |
1095 | Find in Mountain Array | 山脉数组中查找目标值 | Java | Hard |
# | 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 |
347 | Top K Frequent Elements | 前 K 个高频元素 | Java | Medium |
451 | Sort Character sBy Frequency | 根据字符出现频率排序 | Java | Medium |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
9 | Palindrome Number | 回文数 | Java | Easy |
136 | SingleNumber | 只出现一次的数字 | Java | Easy |
137 | SingleNumber Ⅱ | 只出现一次的数字 Ⅱ | Java | Medium |
206 | SingleNumber Ⅲ | 只出现一次的数字 Ⅲ | Java | Medium |
233 | Number of Digit One | 数字 1 的个数 | Java | Hard |
365 | Water and Jug Problem | 水壶问题 | Java | Medium |
400 | Nth Digit | 第 N 个数字 | Java | Hard |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
136 | Product of Array Except Self | 除自身以外数组的乘积 | Java | Medium |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
14 | Longest Common Prefix | 最长公共前缀 | Java | Easy |
415 | Add Strings | 字符串相加 | Java | Easy |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
100 | Same Tree | 相同的树 | Java | Easy |
101 | Symmetric Tree | 对称二叉树 | Java | Easy |
104 | Maximum Depth of Binary Tree | 二叉树的最大深度 | Java | Easy |
106 | Construct Binary Tree from Inorder and Postorder Traversal | 从中序与后序遍历序列构造二叉树 | Java | Medium |
110 | Balanced Binary Tree | 平衡二叉树 | Java | Easy |
111 | Minimum Depth of Binary Tree | 二叉树的最小深度 | Java | Easy |
112 | Path Sum | 路径总和 | Java | Easy |
113 | Path Sum Ⅱ | 路径总和 Ⅱ | Java | Medium |
124 | Binary Tree Maximum Path Sum | 二叉树中的最大路径和 | Java | Hard |
226 | Invert Binary Tree | 翻转二叉树 | Java | Easy |
337 | House Robber Ⅲ | 打家劫舍 Ⅲ | Java | Medium |
404 | Sum of Left Leaves | 左叶子之和 | Java | Easy |
437 | Path Sum Ⅲ | 路径总和 Ⅲ | Java | Easy |
513 | Find Bottom Left Tree Value | 找树左下角的值 | Java | Medium |
543 | Diameter of Binary Tree | 二叉树的直径 | Java | Easy |
572 | Subtree of Another Tree | 另一个树的子树 | Java | Easy |
617 | Merge Two Binary Trees | 合并二叉树 | Java | Easy |
637 | Average of Levels in Binary Tree | 二叉树的层平均值 | Java | Easy |
671 | Second Minimum Node In a Binary Tree | 二叉树中第二小的节点 | Java | Easy |
687 | Longest Univalue Path | 最长同值路径 | Java | Easy |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
128 | Longest Consecutive Sequence | 最长连续序列 | Java | Hard |
560 | Subarray Sum Equals K | 和为 K 的子数组 | Java | Medium |
974 | Subarray Sums Divisible by K | 和可被 K 整除的子数组 | Java | Medium |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
84 | Largest Rectangle in Histogram | 柱状图中最大的矩形 | Java | Hard |
85 | Maximal Rectangle | 最大矩形 | Java | Hard |
739 | Daily Temperatures | 每日温度 | Java | Medium |
# | English Title | Chinese Title | Solution | Difficulty |
---|---|---|---|---|
207 | Course Schedule | 课程表 | Java | Medium |
210 | Course Schedule Ⅱ | 课程表 Ⅱ | Java | Medium |