1 |
222. Count Complete Tree Nodes |
题解 |
二叉树属性。解法技巧有待掌握。完全二叉树的性质还需要加强学习。 |
2 |
404. Sum of Left Leaves |
题解 |
二叉树属性。深刻理解递归退出条件 |
3 |
513. Find Bottom Left Tree Value |
题解 |
二叉树属性。广度优先,尝试一下深度优先。 |
4 |
257. Binary Tree Paths |
题解 |
路径问题。递归,尝试了一下回溯。 |
5 |
112. Path Sum |
题解 |
路径问题。 |
6 |
437. Path Sum III |
题解 |
前缀和解法还需要多思考! |
7 |
654. Maximum Binary Tree |
题解 |
单调栈,与503套路相同。单调栈不是很理解。还需要再加强练习。 |
8 |
617. Merge Two Binary Trees |
题解 |
一个简单的树遍历,递归比较容易,尝试一下迭代,BFS,DFS。 |
9 |
700. Search in a Binary Search Tree |
题解 |
简单的“左右查找”(二分查找) |
10 |
98. Validate Binary Search Tree |
题解 |
树形DP套路或中序遍历(前几天做的) |
11 |
530. Minimum Absolute Difference in BST |
题解 |
98可用中序遍历,正好实验一下 |
12 |
501. Find Mode in Binary Search Tree |
题解 |
利用中根遍历的特性:相同数字一起出现 |
13 |
236. Lowest Common Ancestor of a Binary Tree |
题解 |
想清楚怎么判断是否为公共祖先:在同一棵子树下。拿这棵树的节点逐步递归地去判断是否相等,如果返回值不为空,则处于同一个子树下。 |
14 |
235. Lowest Common Ancestor of a Binary Search Tree |
题解 |
二叉搜索树左大右小,祖先在中间的特性,可以快速去除不必要的判断。 |
15 |
701. Insert into a Binary Search Tree |
题解 |
对二叉搜索树的特性利用。题目中的示例有点干扰。只管往左右子树找即可。 |
16 |
450. Delete Node in a BST |
题解 |
DFS递归,找到需要删除的节点,然后返回处理后的节点,再把左右树嫁接起来即可。尝试一下迭代的实现。 |
17 |
538. Convert BST to Greater Tree |
题解 |
基于 Morris 的倒序中根遍历,值得研究。递归的理解需要加强。 |
18 |
669. Trim a Binary Search Tree |
题解 |
递归简单明了,迭代一脸懵逼。看到答案瞬间就明白了,但自己写不出来,对递归还是似懂非懂! |
19 |
322. Coin Change |
题解 |
从暴力穷举,逐步优化到动态规划。尝试了左程云的阶梯思路,没看明白,需实际案例再分析一下。官方题解的解答比较容易理解。 |
20 |
46. Permutations |
题解 |
回溯思想的入门练习,还需要加强练习 |
21 |
51. N-Queens |
题解 |
独立思考很久完成,经过了多次调试,还需要加强回溯的练习。 |
22 |
52. N-Queens II |
题解 |
回溯,根据51题简化而来 |
23 |
111. Minimum Depth of Binary Tree |
题解 |
两个议题:①Morris解法;②DFS vs BFS 的对比。 |
24 |
752. Open the Lock |
题解 |
多叉树BFS遍历,回头尝试一下双向BFS解法。 |
25 |
127. Word Ladder |
题解 |
BFS,与752类似 |
26 |
104. Maximum Depth of Binary Tree |
题解 |
后根遍历既可以访问父节点,又可以从返回值中获取想要的信息。 |
27 |
704. Binary Search |
题解 |
二分查找 |
28 |
34. Find First and Last Position of Element in Sorted Array |
题解 |
格局打开,两次二分查找还是 O(log n) 。注意边界处理。 |
29 |
76. Minimum Window Substring |
题解 |
滑动窗口,好久不写,忘记咋写了。 |
30 |
567. Permutation in String |
题解 |
滑动窗口 |
31 |
438. Find All Anagrams in a String |
题解 |
滑动窗口,567的变种 |
32 |
3. Longest Substring Without Repeating Characters |
题解 |
滑动窗口 |
33 |
21. Merge Two Sorted Lists |
题解 |
竟然也可以用递归解决! |
34 |
23. Merge k Sorted Lists |
题解 |
优先队列,分治,最差逐个合并都可以。 |
35 |
876. Middle of the Linked List |
题解 |
快慢指针,注意尾部处理 |
36 |
141. Linked List Cycle |
题解 |
快慢指针 |
37 |
142. Linked List Cycle II |
题解 |
快慢指针 |
38 |
160. Intersection of Two Linked Lists |
题解 |
双指针,两个链表逻辑拼接 |
39 |
26. Remove Duplicates from Sorted Array |
题解 |
算法了解,编码功力有待提高 |
40 |
167. Two Sum II - Input array is sorted |
题解 |
两个指针向中间挤压 |
41 |
5. Longest Palindromic Substring |
题解 |
最容易想到的是中心扩散法,还可以用动态规划,甚至还有 O(n) 的马拉车算法。 |
42 |
303. Range Sum Query - Immutable |
题解 |
前缀和非常好的入门试题 |
43 |
304. Range Sum Query 2D - Immutable |
题解 |
复杂一点的前缀和,需要处理更多细节 |
44 |
370. Range Addition |
题解 |
差分数组 |
45 |
1094. Car Pooling |
题解 |
差分数组 |
46 |
1109. Corporate Flight Bookings |
题解 |
差分数组 |
47 |
380. Insert Delete GetRandom O(1) |
题解 |
数据结构应用 |
48 |
710. Random Pick with Blacklist |
题解 |
把映射处理好 |
49 |
496. Next Greater Element I |
题解 |
单调栈,理解不是很透彻,还需要加强练习 |
50 |
503. Next Greater Element II |
题解 |
单调栈+循环数组 |
51 |
739. Daily Temperatures |
题解 |
单调栈,从左向右的写法还需要再加强一下。 |
52 |
239. Sliding Window Maximum |
题解 |
单调栈的妙用!值得学习。 |
53 |
114. Flatten Binary Tree to Linked List |
题解 |
遍历+递归,两套解决方案 |
54 |
912. Sort an Array |
题解 |
归并,快排都可以 |
55 |
230. Kth Smallest Element in a BST |
题解 |
二叉树中根遍历 |
56 |
78. Subsets |
题解 |
组合,回溯 |
57 |
90. Subsets II |
题解 |
组合,回溯,去重 |
58 |
77. Combinations |
题解 |
组合,回溯,剪枝 |
59 |
47. Permutations II |
题解 |
组合,回溯,同层剪枝 |
60 |
39. Combination Sum |
题解 |
组合,回溯,注意学习剪枝的技巧 |
61 |
40. Combination Sum II |
题解 |
组合,回溯,剪枝 |
62 |
698. Partition to K Equal Sum Subsets |
题解 |
组合,回溯,极致剪枝。回头尝试一下桶视角的方案 |
63 |
200. Number of Islands |
题解 |
DFS,对于网格遍历还需要加强练习。 |
64 |
695. Max Area of Island |
题解 |
DFS,利用递归的返回值。 |
65 |
1905. Count Sub Islands |
题解 |
DFS,沉岛 |
66 |
1644. Lowest Common Ancestor of a Binary Tree II |
题解 |
树形DP套路,没有验证答案! |
67 |
155. Min Stack |
题解 |
复习单调栈 |
68 |
42. Trapping Rain Water |
题解 |
巧用单调栈 |
69 |
1650. Lowest Common Ancestor of a Binary Tree III |
题解 |
链表相交 |
70 |
15. 3Sum |
题解 |
双指针 |
71 |
18. 4Sum |
题解 |
双指针 |
72 |
42. Trapping Rain Water |
题解 |
双指针解题方案 |
73 |
11. Container With Most Water |
题解 |
双指针 |
74 |
875. Koko Eating Bananas |
题解 |
二分查找,确定左边界 |
75 |
1011. Capacity To Ship Packages Within D Days |
题解 |
二分查找,确定左边界 |
76 |
528. Random Pick with Weight |
题解 |
前缀和+二分查找 |
77 |
316. Remove Duplicate Letters |
题解 |
综合运用 |
78 |
402. Remove K Digits |
题解 |
单调栈 |
79 |
870. Advantage Shuffle |
题解 |
双指针+优先队列(排序) |
80 |
744. Find Smallest Letter Greater Than Target |
题解 |
二分查找取左右端点是一个怎样的套路? |
81 |
57. Insert Interval |
题解 |
合并区间,思路周全再写代码! |
82 |
41. First Missing Positive |
题解 |
循环排序,思路有意思! |
83 |
268. Missing Number |
题解 |
循环排序 |
84 |
295. Find Median from Data Stream |
题解 |
双堆思路太妙了! |
85 |
480. Sliding Window Median |
题解 |
双端队列+滑动窗口 |
86 |
931. Minimum Falling Path Sum |
题解 |
动态规划 |
87 |
416. Partition Equal Subset Sum |
题解 |
动态规划,0/1背包问题 |
88 |
37. Sudoku Solver |
题解 |
回溯 |
89 |
746. Min Cost Climbing Stairs |
题解 |
动态规划 |
90 |
62. Unique Paths |
题解 |
动态规划 |
91 |
63. Unique Paths II |
题解 |
动态规划 |
92 |
343. Integer Break |
题解 |
动态规划 |
93 |
206. Reverse Linked List |
题解 |
递归解法非常妙! |
94 |
20. Valid Parentheses |
题解 |
栈 |
95 |
242. Valid Anagram |
题解 |
哈希 |
96 |
167. Two Sum II - Input array is sorted |
题解 |
双指针 |
97 |
946. Validate Stack Sequences |
题解 |
模拟栈的操作 |
98 |
287. Find the Duplicate Number |
题解 |
龟兔赛跑找环 |
99 |
230. Kth Smallest Element in a BST |
题解 |
二叉树中根遍历 |
100 |
39. Combination Sum |
题解 |
组合,回溯,注意学习剪枝的技巧 |
101 |
226. Invert Binary Tree |
题解 |
分治 |
102 |
1480. Running Sum of 1d Array |
题解 |
动态规划入门 |
103 |
122. Best Time to Buy and Sell Stock II |
题解 |
贪心 |
104 |
191. Number of 1 Bits |
题解 |
位运算,减法 n&(n-1) 解法牛逼 |
105 |
238. Product of Array Except Self |
题解 |
✅ 前缀和,从后及从前,在一个数组上分两次进行计算 |
106 |
86. Partition List |
题解 |
双指针链表遍历 |
107 |
155. Min Stack |
题解 |
对,这也是单调栈。 |
108 |
387. First Unique Character in a String |
题解 |
哈希+字符串 |
109 |
142. Linked List Cycle II |
题解 |
快慢指针 |
110 |
54. Spiral Matrix |
题解 |
从回溯得到启发,使用递归来完成层次的遍历。 |
111 |
704. Binary Search |
题解 |
二分查找 |
112 |
236. Lowest Common Ancestor of a Binary Tree |
题解 |
想清楚怎么判断是否为公共祖先。 |
113 |
121. Best Time to Buy and Sell Stock |
题解 |
|
114 |
113. Path Sum II |
题解 |
回溯 |
115 |
50. Pow(x, n) |
题解 |
分治,快速幂,迭代实现还需要再思考理解一下。 |
116 |
240. Search a 2D Matrix II |
题解 |
不能对矩阵做二分查找,可以对单行做二分查找。要分析题目,查看如何排除不符合要求的元素。 |
117 |
231. Power of Two |
题解 |
位运算, n & (n - 1) 或约数 |
118 |
343. Integer Break |
题解 |
动态规划,数学分析也可以看一下:怎么样计算自然底数 e 的值? |
119 |
21. Merge Two Sorted Lists |
题解 |
尝试递归解法 |
120 |
232. Implement Queue using Stacks |
题解 |
❌ |
121 |
205. Isomorphic Strings |
题解 |
❌ 哈希映射 |
122 |
876. Middle of the Linked List |
题解 |
✅ 快慢指针,思路OK,注意处理细节。 |
123 |
59. Spiral Matrix II |
题解 |
✅ 利用回溯思想,逐层推进 |
124 |
278. First Bad Version |
题解 |
✅ 逼近边界的二分查找 |
125 |
102. Binary Tree Level Order Traversal |
题解 |
✅ 广度优先遍历 |
126 |
40. Combination Sum II |
题解 |
⭕️ 组合,回溯,剪枝 |
127 |
101. Symmetric Tree |
题解 |
⭕️ 分治 |
128 |
64. Minimum Path Sum |
题解 |
✅ 动态规划 |
129 |
11. Container With Most Water |
题解 |
⭕️ 双指针+贪心 |
130 |
371. Sum of Two Integers |
题解 |
❌ 位运算 |
131 |
89. Gray Code |
题解 |
❌ 位运算 |
132 |
237. Delete Node in a Linked List |
题解 |
⭕️ 解法很巧妙,只需要拷贝一个值,修改一个指针即可。 |
133 |
394. Decode String |
题解 |
✅ 利用DFS的思想,遇到数字就递归。细节处理麻烦! |
134 |
409. Longest Palindrome |
题解 |
✅ 哈希 |
135 |
160. Intersection of Two Linked Lists |
题解 |
✅ 双指针,两个链表逻辑拼接 |
136 |
6. ZigZag Conversion |
题解 |
❌ 注意审题,看题! |
137 |
724. Find Pivot Index |
题解 |
✅ 前缀和 |
138 |
235. Lowest Common Ancestor of a Binary Search Tree |
题解 |
✅ 二叉搜索树左大右小,祖先在中间的特性,可以快速去除不必要的判断。 |
139 |
46. Permutations |
题解 |
✅ 回溯 |
140 |
110. Balanced Binary Tree |
题解 |
✅ 平衡树还是要靠高度来平衡!可以用负数表示不平衡。 |
141 |
70. Climbing Stairs |
题解 |
✅ 动态规划 |
142 |
179. Largest Number |
题解 |
⭕️ 不能直接比较数字的字符串,要比较 a+b 和 b+a ,这是拼接后的数字。 |
143 |
136. Single Number |
题解 |
✅ 位运算,异或 |
144 |
1823. Find the Winner of the Circular Game |
题解 |
❌ 约瑟夫环,使用队列出队入队来模拟计数,出队表示删除。妙! |
145 |
138. Copy List with Random Pointer |
题解 |
✅ 哈希或者链表新旧交替相连 |
146 |
295. Find Median from Data Stream |
题解 |
⭕️ 两个优先队列的解法真妙! |
147 |
151. Reverse Words in a String |
题解 |
✅ 更优解是倒序遍历数组,用双指针记录单词下标。 |
148 |
48. Rotate Image |
题解 |
✅ 回溯,或翻转,或行转列 |
149 |
153. Find Minimum in Rotated Sorted Array |
题解 |
⭕️ 二分查找,知道是二分查找,但思路还是有些混乱。 |
150 |
154. Find Minimum in Rotated Sorted Array II |
题解 |
⭕️ 二分查找,本题与 153 相比,需要处理“等值”情况。 |
151 |
103. Binary Tree Zigzag Level Order Traversal |
题解 |
✅ 通过在 List 在首尾添加元素来实现改变方向的策略。 |
152 |
47. Permutations II |
题解 |
⭕️ 组合,回溯,同层剪枝。剪枝技巧还要再学习! |
153 |
105. Construct Binary Tree from Preorder and Inorder Traversal |
题解 |
✅ 分治法 |
154 |
198. House Robber |
题解 |
✅ 动态规划 |
155 |
135. Candy |
题解 |
❌ 贪心,一脸懵逼!贪心类的题目还需要加强练习 |
156 |
137. Single Number II |
题解 |
❌ 比特位计数取模比较容易理解,有限状态机解法以后再学 |
157 |
169. Majority Element |
题解 |
⭕️ 哈希计数法最易想到,摩尔投票法最妙! |
158 |
392. Is Subsequence |
题解 |
✅ 双指针 |
159 |
415. Add Strings |
题解 |
✅ 双指针,从后向前,模拟加法进位。 |
160 |
215. Kth Largest Element in an Array |
题解 |
❌ 快速查找,知道思路,代码却无从下手。 |
161 |
104. Maximum Depth of Binary Tree |
题解 |
✅ 递归+回溯 |
162 |
509. Fibonacci Number |
题解 |
✅ 动态规划 |
163 |
768. Max Chunks To Make Sorted II |
题解 |
❌ 贪心+单调栈。单调栈的解法思路很精巧! |
164 |
400. Nth Digit |
题解 |
❌ 纯纯的数学运算,一脸懵逼 |
165 |
3. Longest Substring Without Repeating Characters |
题解 |
✅ 滑动窗口。滑动窗口的模板不是很熟悉。可以不存字符格式,存字符最大的坐标。 |
166 |
796. Rotate String |
题解 |
✅ 简单用 contains ;复杂用 KMP 算法。 |
167 |
207. Course Schedule |
题解 |
✅ 拓扑排序 |
168 |
79. Word Search |
题解 |
✅ 回溯 |
169 |
1864. Minimum Number of Swaps to Make the Binary String Alternating |
题解 |
❌ 贪心算法 |
170 |
926. Flip String to Monotone Increasing |
题解 |
❌ 动态规划 |
171 |
2507. Smallest Value After Replacing With Sum of Prime Factors |
题解 |
❌ 数学计算,一脸懵逼 |
172 |
1090. Largest Values From Labels |
题解 |
⭕️ 贪心。排序规则跟 179、870 题类似:保存下标,使用其他数组的值对下标数组进行排序。 |
173 |
869. Reordered Power of 2 |
题解 |
⭕️ 数学,参考答案做了优化 |
174 |
1253. Reconstruct a 2-Row Binary Matrix |
题解 |
⭕️ 贪心,为什么需要先减去 2 呢? |
175 |
892. Surface Area of 3D Shapes |
题解 |
✅ 计算几个柱子的面积 |
176 |
1110. Delete Nodes And Return Forest |
题解 |
✅ 递归+深度优先 |
177 |
904. Fruit Into Baskets |
题解 |
✅ 滑动窗口 |
178 |
1041. Robot Bounded In Circle |
{source_base_url}/_1041_RobotBoundedInCircle.java[Java] |
⭕️ 理解题目,确定符合要求的条件。 |
179 |
881. Boats to Save People |
题解 |
❌ 贪心+双指针 |
180 |
72. Edit Distance |
题解 |
❌ 动态规划,看答案秒懂,自己想不出来! |
181 |
718. Maximum Length of Repeated Subarray |
题解 |
❌ 动态规划。滑动窗口的解法也很妙! |
182 |
5. Longest Palindromic Substring |
题解 |
✅ 滑动窗口解法 |
183 |
31. Next Permutation |
题解 |
❌ 一脸懵逼,可以看成寻找下一个更大的数。这样更容易理解。 |
184 |
474. Ones and Zeroes |
题解 |
❌ 动态规划,0-1 背包问题。 |