- 博客(48)
- 收藏
- 关注
原创 代码随想录一刷总结(待更新)
最重要的是循环不变量原理区间定义 left == right 时有没有意义,取决于开区间还是闭区间使用场景:可以按照某一规则将数组分为左右两部分。
2024-04-03 20:48:37
367
原创 代码随想录day43:动态规划part11,子序列问题,一直到“编辑距离”
dp数组定义 i-1 j-1 是为了省略初始化,如果定义为以 i j 结尾需要对 dp[0] 的情况初始化。
2024-03-20 17:43:48
321
原创 代码随想录day37:动态规划part5,01背包应用
/ dp[j]:容量j的背包放下的最大重量,容量重量都是stones[i]i < n;i++) {j--)// 分出这么多,又粉碎抵消这么多。
2024-03-11 16:46:38
353
原创 代码随想录day36:动态规划part4,背包问题
dp[j]表示:容量为j的背包,所背的物品价值可以最大为dp[j]。dp[i][j]里的i和j表达的是什么了,i是物品,j是背包容量。
2024-03-10 18:05:40
376
原创 代码随想录day31:贪心part5,重叠区间
射箭是多出来一个重叠区间 count + 1。本题是多一个区间重叠 count + 1。每个字母更新最短结束右边界。
2024-03-04 15:18:10
285
原创 代码随想录day21:回溯part1,组合问题与剪枝
找到满足 path 长度达到 k 的最多遍历到的上界 n - (k - path.size()) + 1。一层回溯(即一层递归)解决一层for循环的问题。
2024-02-20 22:31:12
223
原创 代码随想录day16:二叉树part5,路径总和(回溯),中序+前/后序构造二叉树
【代码】代码随想录day16:二叉树part5,路径总和(回溯),中序+前/后序构造二叉树。
2024-02-15 20:23:56
309
1
原创 代码随想录day12:二叉树part1,递归/迭代遍历法
那么再看看中序遍历,中序遍历是左中右,先访问的是二叉树顶部的节点,然后一层一层向下访问,直到到达树左面的最底部,再开始处理节点(也就是在把节点的数值放进result数组中),这就造成了。分析一下为什么刚刚写的前序遍历的代码,不能和中序遍历通用呢,因为前序遍历的顺序是中左右,先访问的元素是中间节点,要处理的元素也是中间节点,所以刚刚才能写出相对简洁的代码,类似前序遍历,利用栈,根 左 右 顺序入栈可以实现 根 右 左 的结果。利用栈,根 右 左 顺序入栈可以实现 根 左 右 的处理顺序。
2024-02-06 22:56:50
345
1
原创 代码随想录day11:栈与队列part3,单调队列&&优先队列(堆)
为什么用小根堆:维持一个k个元素的小根堆,将时间复杂度从O(nlogn)降低到 O(nlogk),多于k个元素时加入元素把堆顶(频率最小的)元素删除,剩下维护的就是频率最大的k个元素了。单调队列应用,滑动窗口一进一出的过程很像队列的处理过程。
2024-02-05 16:00:30
247
1
原创 代码随想录day8:字符串part2,KMP算法
next数组值含义:当前最长相等前后缀长度。j 同时表示:当前最长相等前后缀长度。j+1 表示:前缀末尾位置。i 表示:后缀末尾位置。
2024-02-02 00:21:03
332
原创 代码随想录day7:字符串part1,反转字符串的多种用法,StringBuilder用法
想一下,我们将整个字符串都反转过来,那么单词的顺序指定是倒序了,只不过单词本身也倒序了,那么再把单词反转一下,单词不就正过来了。反转字符串与反转链表的不同点:元素内存分布不同所以方法不同。举个例子,源字符串为:"the sky is blue "字符串也是一种数组,元素在内存中是连续分布。反转字符串与反转链表的相同点:都使用双指针。上题相同的,整体反转+局部反转 的思想。这样我们就完成了翻转字符串里的单词。StringBuilder的使用。不调库版本,练习代码功底。
2024-01-31 23:08:32
354
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人