友情支持

如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜

支付宝

微信

有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。

wx jikerizhi

公众号的微信号是: jikerizhi因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。

2024年06月 刷题日志

序号 题目 题解 备注

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+bb+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 背包问题。

截止目前,本轮练习一共完成 184 道题。