- 博客(31)
- 收藏
- 关注
原创 代码随想录刷题39,40天|62.不同路径
想要求dp[i][j],只能有两个方向来推导出来,即dp[i - 1][j] 和 dp[i][j - 1]。此时在回顾一下 dp[i - 1][j] 表示啥,是从(0, 0)的位置到(i - 1, j)有几条路径,dp[i][j - 1]同理。那么很自然,dp[i][j] = dp[i - 1][j] + dp[i][j - 1],因为dp[i][j]只有这两个方向过来。
2024-02-24 16:35:33
478
原创 代码随想录刷题第38天|509,70,746
dp[i]就是由前两位推出来的,那么也不用dp数组动态规划5步:确立dp数组含义递推公式初始化dp遍历顺序打印。
2024-02-24 13:06:45
253
原创 代码随想录刷题第36天|435.无重叠区间,763划分字母区间56.合并区间
就是取 区间1 和 区间2 右边界的最小值,因为这个最小值之前的部分一定是 区间1 和区间2 的重合部分,如果这个最小值也触达到区间3,那么说明 区间 1,2,3都是重合的。用总区间数减去弓箭数量 就是要移除的区间数量了。
2024-02-19 19:47:12
214
原创 代码随想录刷题第34天|860.柠檬水找零,406.根据身高重建队列,452. 用最少数量的箭引爆气球
排序完的people: [[7,0], [7,1], [6,1], [5,0], [5,2],[4,4]]
2024-02-18 15:31:07
227
原创 代码随想录刷题第33天|1005.K次取反后最大化的数组和134. 加油站135. 分发糖果
贪心的思路,局部最优:让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个数组和达到最大。那么又是一个贪心:局部最优:只找数值最小的正整数进行反转,当前数值和可以达到最大(例如正整数数组{5, 3, 1},反转1 得到-1 比 反转5得到的-5 大多了),全局最优:整个 数组和 达到最大。
2024-02-18 00:58:25
295
原创 代码随想录刷题第32天|122.买卖股票的最佳时机,55.跳跃游戏,45.跳跃游戏||
局部最优:收集每天的正利润,全局最优:求得最大利润55.跳跃游戏其实跳几步无所谓,关键在于可跳的覆盖范围贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点。45.跳跃游戏||所以真正解题的时候,要从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最少步数!这里需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖。这里还是有个特殊情况需要考虑,当移动下标达到了
2024-02-15 16:08:40
426
原创 代码随想录|455.发饼干,376.摆动序列,53.最大子序和
只需要在 这个坡度 摆动变化的时候,更新 prediff 就行,这样 prediff 在 单调区间有平坡的时候 就不会发生变化,造成我们的误判。局部最优:当前“连续和”为负数的时候立刻放弃,从下一个元素重新计算“连续和”,因为负数加上下一个元素 “连续和”只会越来越小。, 平坡分两种,一个是 上下中间有平坡,一个是单调有平坡。题目中说了,如果只有两个不同的元素,那摆动序列也是 2。
2024-02-14 21:06:37
119
原创 代码随想录刷题28天|93.复原IP地址,78.子集,90.子集II
回溯的时候,就将刚刚加入的分隔符删掉就可以了,pointNum也要-1。最后就是在写一个判断段位是否是有效段位了。
2024-02-09 23:32:26
204
原创 代码随想录刷题26天|39.组合总和,40.组合总和II,131.分割回文子串
有树枝限制如果是一个集合来求组合的话,就需要startIndex。
2024-02-07 22:03:04
232
原创 代码随想录刷题第20天|654.最大二叉树,
我们在寻找一个不符合条件的节点,如果没有找到这个节点就遍历了整个树,如果找到不符合的节点了,立刻返回。不用回溯,查找路线规划好了。
2024-01-31 01:32:07
142
原创 代码随想录刷题第16天|104.二叉树的最大深度,111.二叉树的最小深度
运用了层序遍历使用后续遍历本题可以使用前序(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的是高度。,所以本题中我们通过后序求的根节点高度来求的二叉树最大深度。
2024-01-27 01:14:27
146
1
原创 代码随想录刷题15天|二叉树层序遍历
对队列中弹出的元素加以控制最终结果用二维数组保存类似于广度优先好的,我们以输入为例,使用递归的隐式栈来描述整个过程。这里的树结构如下:root3levels3levels[0]9levels[1]20levels[1]15levels[2]7levels[2]7None这就是使用递归的隐式栈来描述输入的层序遍历过程。
2024-01-26 01:17:18
273
1
原创 代码随想录刷题第13天|239.滑动窗口最大值,347.前k个高频元素
【代码】代码随想录刷题第13天|239.滑动窗口最大值,347.前k个高频元素。
2024-01-23 17:43:58
304
1
原创 代码随想录刷题第11天|20.有效括号
在匹配左括号的时候,右括号先入栈,就只需要比较当前元素和栈顶相不相等就可以了,比左括号先入栈代码实现要简单的多了!
2024-01-22 00:23:12
314
原创 代码随想录刷题第九天|28.找出字符中的第一个下标,459.重复的子字符串
next 前缀表:原封不动,看前一位,本位为最大前缀;整体右移,看本位j还代表了i之前包括i 这个子串的最长相等的前后缀的长度。
2024-01-21 00:37:25
418
原创 代码随想录刷题第八天|344.反转字符串,541.反转字符串II,54.替换数字,151.反转字符串里的单词,55.右旋转字符串
在Python中,ord()函数返回给定字符的Unicode代码点,通过比较'i'的Unicode代码点与'0'和'9'的代码点,可以检查'i'是否是一个数字。如果'i'的Unicode代码点在'0'和'9'的代码点之间,那么'i'就是一个数字。想一下,我们将整个字符串都反转过来,那么单词的顺序指定是倒序了,只不过单词本身也倒序了,那么再把单词反转一下,单词不就正过来了。其实,思路就是 通过 整体倒叙,把两段子串顺序颠倒,两个段子串里的的字符在倒叙一把,双指针移除空格,类似双指针移除元素,空间复杂O(1)
2024-01-17 18:53:37
340
原创 代码随想录刷题第六天|242.有效的字母异位词,349.两个字母的交集,202.快乐数,1.两数之和
直接使用set 不仅占用空间比数组大,而且速度要比数组慢,set把数值映射到key上都要做hash计算的。数量大的时候才用set。
2024-01-16 01:16:15
405
1
原创 代码随想录刷题第四天|24.两两交换链表的节点,19.删除链表倒数第N个节点,160.链表相交,142.环形链表II
除了环形链表,其余都是408做过的。
2024-01-15 01:02:10
413
原创 代码随想录打卡第二天|977.有序数组,209.长度最小的子数组,59.螺旋矩阵
刷题的第二天,准确来说是第三天了,因为已经过了十二点。今天有点拖延,直到下午才学,所以没有看拓展题。刷题时也没能静下心来,但好歹还是完成了基本任务。还是有些基本语法没熟悉,比如python的定义数组等。
2024-01-12 01:33:07
341
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人