友情支持
如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜
有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。
公众号的微信号是: jikerizhi 。因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。 |
2025年03月 刷题日志
序号 | 题目 | 题解 | 备注 |
---|---|---|---|
1 |
⭕️ 递归解法非常妙!传一个参数, |
||
2 |
✅ 思考清楚确定边界时,中间指针的移动方向即可迎刃而解。 |
||
3 |
⭕️ 重点去处理有序部分,在有序部分内查找不到,则去另外一部分去查找。 |
||
4 |
✅ 对区间进行排序,然后快慢指针在当前数组上对其进行合并。 |
||
5 |
✅ 关注有序区间,确定目标值在有序区间内,则在有序区间查找;反之,则在另外一部分内查找。另外,通过移动一个指针即可避开重复元素。 |
||
6 |
✅ 注意审题!返回的是数组下标。 |
||
7 |
✅ 双指针 |
||
8 |
✅ 快慢指针 |
||
9 |
✅ 快慢指针 |
||
10 |
⭕️ 滑动窗口,一定注意细节的处理。 |
||
11 |
❌ 完全想不到单调栈! |
||
12 |
✅ Top K 问题,优先队列;桶排序 |
||
13 |
⭕️ 快速选择,想清楚边界情况! |
||
14 |
⭕️ 循环排序,看了答案,自己写出来了。 |
||
15 |
⭕️ 双堆,思路理解,写代码却有很多问题。 |
||
16 |
✅ 多路归并 |
||
17 |
✅ 广度优先搜索 |
||
18 |
⭕️ 深度优先搜索,注意处理负数情况 |
||
19 |
✅ 滑动窗口 |
||
20 |
✅ 链表前后指针操作 |
||
21 |
✅ 两种解法:递归+迭代 |
||
22 |
✅ 快速选择 |
||
23 |
✅ 分段递归反转,再拼接 |
||
24 |
✅ 前缀树,竟然一次通过 |
||
25 |
✅ 并查集,竟然一次通过 |
||
26 |
✅ 利用递归“降维” |
||
27 |
✅ 拓扑排序 |
||
28 |
⭕️ 动态规划。稀里糊涂就对了,还要对推演。另有更精妙的分治解法,抽空再尝试。 |
||
29 |
✅ |
||
30 |
✅ 有更高效的马拉车算法,抽空可以尝试一下。 |
||
31 |
⭕️ 重点关注有序部分,优先在有序部分查找,不在有序部分再去无序部分查找。注意判定有序部分的方法: |
||
32 |
✅ 想尝试并查集,结果失败。还是沉岛大法好啊! |
||
33 |
✅ 回溯 |
||
34 |
✅ 更巧妙的解法是位运算,如果 |
||
35 |
✅ |
||
36 |
✅ 递归很简单,抽空再思考一下非递归形式。 |
||
37 |
✅ 分治 |
||
38 |
❌ 动态规划,多维度“物品”就无从下手,还要多练。 |
||
39 |
⭕️ 动态规划,完全背包问题 |
||
40 |
⭕️ 子集,需要注意重复元素的处理。现在用 |
||
41 |
✅ 子集。注意对比子集模式在处理子集和排列时的不同:①子集直接在结果中添加新子集;②排列则是将结果中的元素出队,添加新元素后,再入队。 |
||
42 |
✅ 遍历找最大差值 |
||
43 |
✅ 递归遍历查找目标节点,找到则返回,找不到则返回 |
||
44 |
✅ 链表反转 |
||
45 |
✅ 暴力破解。更有的解法是 KMP 算法、Boyer-Moore 算法、Sunday 算法等算法。 |
||
46 |
✅ 使用递归来推进层级。注意处理细节。另外,在“上”和“右”能覆盖“全部”(比如一行多列或者多行一列)时,才能在“下”之前根据长度返回。尝试了每段“读取”只剩一个的方案,不行,有很多意外情况要处理。 |
||
47 |
✅ 双指针 |
||
48 |
✅ 双指针+链表反正+链表合并 |
||
49 |
✅ 双指针+数学 |
||
50 |
✅ 双指针+虚拟头节点。使用虚拟头结点会省事好多。 |
||
51 |
✅ 回溯 |
||
52 |
✅ 动态规划 |
||
53 |
✅ 动态规划 |
||
54 |
✅ 动态规划 |
||
55 |
✅ 动态规划 |
||
56 |
✅ 动态规划+树 = 树形动态规划 |
||
57 |
❌ 看答案也一脸懵逼! |
||
58 |
❌ 把题目理解错了。处理后就是最简单的打家劫舍问题。 |
||
59 |
✅ 动态规划 |
||
60 |
✅ 动态规划 |
||
61 |
❌ 明知是回溯,但在处理当前节点时,总把当前和下一步混在一起。有思路,没写出代码。 |
||
62 |
✅ 动态规划。直接在原有矩阵上操作即可。 |
||
63 |
✅ 动态规划。从底向上比从上向底效率更高。 |
||
64 |
✅ 动态规划 |
||
65 |
⭕️ 动态规划。题目理解错误。 |
||
66 |
✅ 动态规划。直接将结果存储在参数矩阵上。如果正方形想扩大,则左边,左上和上面三个都是正方形时才可以,可以直接去这三者中的最小值。 |
||
67 |
⭕️ 回溯+备忘录。首先想到的是回溯,但是超时(通过34/47的测试用例)。参考别人题解后,得到启发,加上备忘录通过。参考答案写出了动态规划的解法。思考如何从基于回溯+备忘录转变为动态规划? |
||
68 |
✅ 回溯。没想到从 |
||
69 |
❌ 动态规划。相当于在“结尾”中寻找回文子串。从一维字符串字符坐标去看转移方程,会更加清楚明了。 |
||
70 |
✅ 双指针 |
||
71 |
✅ 快慢指针。慢指针记录满足条件的长度,快指针指向需要处理的元素。 |
||
72 |
❌ 使用单调栈没写出来。使用单调栈,需 |
||
73 |
✅ 动态规划。思考如何进一步优化成一维数组? |
||
74 |
⭕️ 添加虚拟节点的做法超时。看答案给节点加编号通过。 |
||
75 |
❌ 明白大概意思,思路不够条理,写不出代码。 |
||
76 |
❌ 题目理解错误,是轮转数组,不是旋转数组。 |
||
77 |
✅ 快慢指针。看答案,一个指针也可以!而且代码更简单! |
||
78 |
❌ 动态规划。这里求的是公共子数组,只能在两个字符相等时,在上一个字符的基础上加 |
||
79 |
✅ 动态规划。注意区分“子序列”和“子数组”的区别。 |
||
80 |
✅ 滑动窗口。没想到队列也能当滑动窗口。 |
||
81 |
✅ 回溯 |
||
82 |
❌ 并查集。通过邮箱编号建立连接,而不是通过账户索引建立连接。 |
||
83 |
⭕️ 最初思路是排序。看答案,可以构建集合,然后“起点”(没有前一个数字)数字开始统计。 |
||
84 |
✅ |
||
85 |
❌ 单调栈,与 316. Remove Duplicate Letters 相同。知道用单调栈,但还是没写出来。 |
||
86 |
❌ 动态规划。看答案也一脸懵逼! |
||
87 |
✅ 二叉树中根遍历。 |
||
88 |
⭕️ 回溯。找出所有的高峰和山谷,然后对高峰做排列,计算各种排列与山谷的距离,取最小值即可。有模糊思路,看答案才写出代码。 |
||
89 |
❌ 滑动窗口。要分情况处理窗口移动问题。 |
||
90 |
⭕️ 栈。使用栈记录左右括号的下标,匹配后标注“占位符”。最后,统计占位符中的数量,找出最大长度。 |
||
91 |
✅ 二分查找。把矩阵按行“拼接”,然后二分查找,解法非常妙。 |
||
92 |
❌ 单调栈。一脸懵逼。哨兵技巧非常巧妙。 |
||
93 |
⭕️ 栈。把 |
||
94 |
❌ 动态规划,0/1 背包问题。一脸懵逼。 |
||
95 |
⭕️ 回溯。学习使用位操作来标注已用字符,计算未用字符。位操作真是太玄妙了! |
||
96 |
✅ 回溯 |
||
97 |
✅ 回溯。注意同层剪枝的技巧。 |
||
98 |
✅ 使用递归来推进循环。 |
||
99 |
✅ 使用 |
||
100 |
✅ 前缀和。需要记录每一个和的出现次数。 |
||
101 |
✅ 二分查找。使用一个单独变量来保存最后一个小于等于的中间值,那么即可直接获取答案。 |
||
102 |
✅ 有差价就买卖,见好就收。 |
||
103 |
✅ 双指针 |
||
104 |
✅ 位运算。出现两次,则异或后为 |
||
105 |
✅ 贪心算法。优先禁止最近的对方议员投票。不停循环,直到只留下一方议员。 |
||
106 |
✅ 贪心算法。最高位尽可能跟后面的最大数字进行交换。 |
||
107 |
✅ 双指针 |
||
108 |
✅ |
截止目前,本轮练习一共完成 108 道题。