代码随想录
文章平均质量分 57
日常
isabelightL
我与我周旋久,宁作我。
展开
-
代码随想录|day13| 栈与队列part03 ● 239. 滑动窗口最大值● 347.前 K 个高频元素● 总结
没有把第一个最大值放进res ,更正后正确。原创 2023-06-12 13:52:09 · 422 阅读 · 0 评论 -
代码随想录| day11|栈与队列part02 ● 20. 有效的括号● 1047. 删除字符串中的所有相邻重复项● 150. 逆波兰表达式求值
注:C++的switch只能接受数值、字符型(不可以字符串)大概看了一下,由于是简单题所以没重新做。150. 逆波兰表达式求值。有个字符串转int的函数。把“-11” 转为 -11。原创 2023-06-12 10:22:07 · 745 阅读 · 0 评论 -
代码随想录|day8|字符串1● 344.反转字符串● 541. 反转字符串II● 剑指Offer 05.替换空格● 151.翻转字符串里的单词● 剑指Offer58-II.左旋转字符串
151.翻转字符串里的单词 -------快慢指针,特殊思路。剑指Offer58-II.左旋转字符串。原创 2023-06-11 14:41:26 · 45 阅读 · 0 评论 -
代码随想录|day58|单调栈part01 ● 739. 每日温度 ● 496.下一个更大元素 I
为了便于理解,我定义了map,遍历nums2中的单调栈,map的第一个元素是nums2中的元素,第二个元素储存nums2中每个元素对应的下一个元素。然后最终修改nums1.看nums1中的每个元素在不在map中,从而找到对应的下一个元素。大家可以读题,思考暴力的解法,然后在看单调栈的解法。我记得的,这个要把数组*2,或者使用%。以前做过,现在不记得咋做的了。本题和 739. 每日温度 看似差不多,其实 有加了点难度。今天正式开始单调栈,这是单调栈一篇扫盲题目,也是经典题。怎样层层递进加入难度的。原创 2023-04-27 13:18:35 · 445 阅读 · 0 评论 -
代码随想录|day57|动态规划part17● 647. 回文子串 ● 516.最长回文子序列● 动态规划总结篇
647. 回文子串647. 回文子串动态规划解决的经典题目,如果没接触过的话,别硬想 直接看题解。原创 2023-04-26 15:26:49 · 113 阅读 · 0 评论 -
代码随想录|day56|动态规划part16● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇
72. 编辑距离583. 两个字符串的删除操作本题和动态规划:115.不同的子序列 相比,其实就是两个字符串都可以删除了,情况虽说复杂一些,但整体思路是不变的。自己的思路和错误的地方。看了代码随想录之后,自己写出来的。理解程度80%。具体不太彻底懂的点在递推公式那里。原创 2023-04-25 11:37:46 · 133 阅读 · 0 评论 -
代码随想录|day55|动态规划part15● 392.判断子序列 ● 115.不同的子序列
这道题目算是 编辑距离问题 的入门题目(毕竟这里只是涉及到减法),慢慢的,后面就要来解决真正的 编辑距离问题了。和我自己想的思路很像,只是我把定义dp[i][j]代表s[0...i-1]、t[0...j-1]是否匹配。但相对于刚讲过 392.判断子序列,本题 就有难度了 ,感受一下本题和 392.判断子序列 的区别。答案dp[i][j]代表s[0...i-1]、t[0...j-1]匹配的最大长度。最后一个位置推理为dp[0][0]==1.看完答案后,这个比较好写出来。两种写法,双指针和动态规划。原创 2023-04-24 18:13:29 · 86 阅读 · 0 评论 -
代码随想录2刷|day4|● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和
349. 两个数组的交集建议:本题就开始考虑 什么时候用set 什么时候用数组,本题其实是使用set的好题,但是后来力扣改了题目描述和 测试用例,添加了 0 <= nums1[i], nums2[i] <= 1000 条件,所以使用数组也可以了,不过建议大家忽略这个条件。尝试去使用set。202. 快乐数。原创 2023-05-15 12:29:37 · 43 阅读 · 0 评论 -
代码随想录|day51|动态规划part12● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费 ●总结
说实在的这个暂时没看懂。比起我分析的状态,又多了一种状态,看着十分头大。714.买卖股票的最佳时机含手续费。和答案不一样,但是还是有些相似的。原创 2023-04-20 16:28:11 · 194 阅读 · 0 评论 -
代码随想录|day52| 动态规划part13● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组
思考,按照dp[i][j]是以nums1[i-1]、nums2[j-1]为结尾的最长重复子数组的长度这种定义,不应该返回dp[n1-1][n2-1]这种。它的最长递增子序列就不是最后一个元素。所以必须再遍历一遍得到的dp[j],返回最大值。因为以nums[i]为末尾元素的最长递增子序列至少长度为1.改正之后正确。最长递增子序列是 [2,3,7,101],因此长度为 4。看了思路之后写的代码,不知道为什么报错了。dp数组的初始化值不应该为0,而应该是1。自己的做法,看了一下思路为贪心。打印的二维数组是对的。原创 2023-04-21 11:40:23 · 204 阅读 · 0 评论 -
代码随想录|day53|动态规划part14● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划
53. 最大子序和-------------这道题做了很多遍,再做感觉没有印象。理解它和公共子序列问题一样还是需要一定门槛。代码就是复制公共子序列的题。阿哲,就是最长公共子序列。1143.最长公共子序列。看了20分钟,没思路捏。1035.不相交的线。1035.不相交的线。说这道题用贪心做过。原创 2023-04-22 11:29:47 · 80 阅读 · 0 评论 -
代码随想录|day50|动态规划part11● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV
这道题一下子就难度上来了,关键在于至多买卖两次,这意味着可以买卖一次,可以买卖两次,也可以不买卖。本题是123.买卖股票的最佳时机III 的进阶版。看了题解,然后自己写出来了,一遍过啦啦啦啦啦。状态转移方程比较好想,初始值并不太好想。直接看答案,五种状态,清晰明白。188.买卖股票的最佳时机IV。188.买卖股票的最佳时机IV。基本明白思路后能一次写出。原创 2023-04-19 10:08:15 · 88 阅读 · 0 评论 -
代码随想录|day46|动态规划part08● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇!
这道题比较复杂的是dp的i和j,与s.substr中s的index,不是一个东西,相差1,相差的1就是dp[0]空字符串。后来改成代码随想录的答案(i<j)正确了。大概看了一下,全部想错了呢。救命,回溯法全部忘光了。原创 2023-04-17 10:35:44 · 76 阅读 · 0 评论 -
代码随想录|day45| 动态规划part07● 70. 爬楼梯 (进阶)● 322. 零钱兑换 ● 279.完全平方数
本题 和 322. 零钱兑换 基本是一样的,大家先自己尝试做一做。如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for循环遍历物品。思路基本没问题,有些约束条件不知道为什么会加。这俩条件没写出来报错了。原创 2023-04-15 21:20:14 · 73 阅读 · 0 评论 -
代码随想录|day43| 动态规划part05---------● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零
想使用回溯法,结果回溯法也生疏了唉。不应该把sum==target写在条件里。自己的答案,看着视频后做出来了,没有细看视频。很像了,可以尝试先自己思考做一做。416. 分割等和子集。原创 2023-04-15 21:22:07 · 58 阅读 · 0 评论 -
代码随想录|day48| 动态规划part09● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III
用的是逻辑而不是套路。让人想起爬楼梯那道题。这里我犯了初始化错误,错误在注释中写出。啥也不会,但是视频讲的太好啦!没想到做法,感觉这道题只能靠认识,自己想不出来。这里我还以为要用01背包。最终代码自己写出来了,很满足。原创 2023-04-17 15:57:50 · 83 阅读 · 0 评论 -
代码随想录|day42| 动态规划part04-----01背包问题,你该了解这些! ● 01背包问题 滚动数组 ● 416. 分割等和子集
此时dp[j]有两个选择,一个是取自己dp[j] 相当于 二维dp数组中的dp[i-1][j],即不放物品i,一个是取dp[j - weight[i]] + value[i],即放物品i,指定是取最大的,毕竟是求最大价值,dp[j]可以通过dp[j - weight[i]]推导出来,dp[j - weight[i]]表示容量为j - weight[i]的背包所背的最大价值。dp[j - weight[i]] + value[i] 表示 容量为 j - 物品i重量 的背包 加上 物品i的价值。原创 2023-04-12 10:44:00 · 242 阅读 · 0 评论 -
代码随想录|day44|动态规划part06● 完全背包● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ
因为每一行,比如第一行只放了物品1,物品2等到第二行才放。则当遍历dp[2]只会有(1,2),不会出现(2,1).//先遍历背包还是先遍历物品是没有影响的。可以和01背包保持一致,都先遍历物品再遍历背包,也就是一行行按行遍历。背包容量的每一个值,都是经过 1 和 5 的计算,包含了{1, 5} 和 {5, 1}两种情况。01背包的核心代码,01背包内嵌的循环是从大到小遍历,为了保证每个物品仅被添加一次。与0、1背包不同的是,内层循环遍历背包时需要从小到大遍历,这点和0、1背包不同。原创 2023-04-15 17:39:53 · 361 阅读 · 0 评论 -
代码随想录|day49|动态规划part10● 121. 买卖股票的最佳时机 ● 122.买卖股票的最佳时机II
好难懂,尤其是理解状态的变化以及为什么要这么设置,花了大概一个半小时去理解什么叫”持有股票“,什么叫”不持有股票“。我自己拆分了下几种情况。这道题有贪心和动态规划两种解法,贪心前面已经写过,而且我二刷竟然记得!第0天(在卖的情况下)能持有的最大资产,//第一天不能既买又卖,最大值为0。,因为这种情况下是第i天卖出,则前提条件是前面已经买入股票了。第0天(在买的情况下)能持有的最大资产。直接看答案吧,自己做想不出啦。买卖股票I和买卖股票||的对比。我与他人的bettle结果。原创 2023-04-18 11:33:43 · 115 阅读 · 0 评论 -
代码随想录|day41| 动态规划part03● 343. 整数拆分 ● 96.不同的二叉搜索树
今天两题都挺有难度,建议大家思考一下没思路,直接看题解,第一次做,硬想很难想出来。视频讲解很详细,链接。原创 2023-04-10 11:23:31 · 330 阅读 · 0 评论 -
代码随想录|day25|回溯算法part02----● 216.组合总和III● 17.电话号码的字母组合
第二个剪枝部分是 sum>targetsum,则return。剪枝,第一个剪枝部分是剪枝start_index。没有剪枝,组合进阶版。原创 2023-03-28 15:40:27 · 77 阅读 · 0 评论 -
代码随想录|day34|贪心算法 part03● 1005.K次取反后最大化的数组和 ● 134. 加油站● 135. 分发糖果
需要背。原创 2023-04-09 21:17:07 · 275 阅读 · 0 评论 -
代码随想录|day21|二叉树part07 ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先
最优的答案,这个答案不是计算上一个元素的连续相等元素个数,而是先pre=cur,然后计算比较cur->val和最大值,这样cur==nullptr时,能计算完所有元素的连续个数。第一次做,理解错误,认为只需要以节点为单位,认为由于是二叉搜索树,所以中序遍历一定是一个连续的有序序列,则只需要比较root->left->val和root->val。自己的做法,通过查看官方题解,又掌握一种。实际:理解错误,比如这种情况,要找到的是左子树的最大值,右子树的最小值,和root->val进行比较找最小值。原创 2023-03-21 23:18:10 · 150 阅读 · 1 评论 -
代码随想录|day31|贪心算法part01----● 理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和
思路:简单的给小饼干排序,给小朋友胃口排序,然后对于每块小饼干,如果小孩子吃了,下一次循环就看下一块小饼干和这个孩子之后的孩子。从代码角度上来讲:遍历nums,从头开始用count累积,如果count一旦加上nums[i]变为负数,那么。基本贪心的题目 有两个极端,要不就是特简单,要不就是死活想不出来。个人觉得代码随想录的答案太不容易想了,容易出错。,所以大家了解贪心算法 就了解它没有规律的本质就够了。学完贪心之后再去看动态规划,就会了解贪心和动规的区别。不用花心思去研究其规律, 没有思路就立刻看题解。原创 2023-03-31 15:35:28 · 70 阅读 · 0 评论 -
代码随想录|day26|回溯算法part03● 39. 组合总和● 40.组合总和II● 131.分割回文串
也就是隔板法,比如string.size===16,则有15个空位,第一块隔板在15个空位上随便选一个,然后再放第二块隔板(第二块隔板在第一块隔板后),再放第三块隔板(第三块隔板在第二块隔板后)。因为下一层是上一层隔板的位置,总之看代码随想录,我自己的逻辑还是稍微模糊。一次对,同样在进入下次循环时,注意startindex是从j开始,还是j+1开始。今天的练习基本就是回溯法组合问题,这一节只要看labuladong即可。树的每一层,是检验放一块隔板、两块隔板。我的思路是没有,直接看了代码随想录。原创 2023-03-28 19:46:33 · 415 阅读 · 0 评论 -
代码随想录|day29|回溯算法part05* 491.递增子序列* 46.全排列* 47.全排列 II
本题 就是我们讲过的 40.组合总和II 去重逻辑 和 46.全排列 的结合,可以先自己做一下,然后重点看一下 文章中 我讲的拓展内容。去看了视频,发现我自己的横向去重部分的代码,还是建立在数组排序之上的,而这里给出的原数组根本没有排序,也就是说用。本题重点感受一下,排列问题 与 组合问题,组合总和,子集问题的区别。排列问题,每次都要从头开始搜索,例如元素1在[1,2]中已经使用过了,但是在[2,1]中还要再使用一次1。仍然不对,继续修改。//可重,要先排序,对于横向展开的选择再去重,和组合思路一样。原创 2023-03-29 15:28:12 · 190 阅读 · 0 评论 -
代码随想录|day24|回溯算法part01-----------77.组合
题目:代码:最佳答案是labuladong的答案,我调整了一些参数,start_index和下一层的关系一定要搞清楚。自己画的图:k限制了树的高度,n限制了树的宽度。回溯法的搜索过程就是一个树型结构的遍历过程,在如下图中,可以看出for循环用来横向遍历,递归的过程是纵向遍历。这里还有一个剪枝优化过程。原创 2023-03-28 15:03:29 · 95 阅读 · 0 评论 -
代码随想录|day16|二叉树篇----● 104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
注:这道题我用了回溯法,但并不是最佳解法。这种想法把空左子树、空右子树设为了最大。分情况讨论,一次递归,无需回溯。这道题完全忘记了怎么优化!559.n叉树的最大深度。111.二叉树的最小深度。原创 2023-03-16 23:11:33 · 46 阅读 · 0 评论 -
代码随想录|day39|动态规划part02● 62.不同路径 ● 63. 不同路径 II
自己做出来了,知道是动态规划后并不难想。原创 2023-04-08 16:41:32 · 374 阅读 · 0 评论 -
代码随想录|day23|二叉树part09 ● 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树 ● 总结篇
有时候感觉自己的心就像海滩,潮起潮落,而且每天晚上和早上,都会冲上岸来一波一波自我厌弃怀疑、后悔焦虑的垃圾,我在这堆海洋垃圾里感到窒息。突然发现每过一天,我都会比昨天更emo,压力也更大,想尝试的无论如何都想尝试,那么我只能持续的努力到明年四月。如果我能做到这件事,我就是最棒的isabel了。自己做出来了,提示:前序遍历,二分,类似根据前序中序遍历构造二叉树。总结:删除时,,每种情况都要分类讨论清楚。108.将有序数组转换为二叉搜索树。538.把二叉搜索树转换为累加树。解法:特殊的后序遍历,先右后左。原创 2023-03-25 22:20:51 · 82 阅读 · 1 评论 -
代码随想录|day32|贪心算法 part02● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II
本题同样不容易想出来。贪心就是这样,有的时候 会感觉简单到离谱,有时候,难的不行,主要是不容易想到。正确答案,这次经过重新思考,确定最后一个farest到达n-1即可。想了一些很初级的做法,但是全都不对。122.买卖股票的最佳时机II。原创 2023-04-08 21:20:22 · 100 阅读 · 0 评论 -
代码随想录|day38|动态规划part01● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯
1、找dp数组,下标的表示含义,一定要清楚dp[i][j]中i,j,的含义。PS:贪心算法整一个大章节跳过了,过后两天补上。今天先跟上动态规划的步伐。很简单的动规入门题,但简单题使用来掌握方法论的,还是要有动规五部曲来分析。5、当自己感到迷惑时,要打印dp数组。打家劫舍3道,股票问题7、8道。有拓展问题,但是没有看。3、dp数组如何初始化。原创 2023-04-07 12:08:22 · 332 阅读 · 0 评论 -
代码随想录|day28|回溯法---- 93.复原IP地址 ● 78.子集 ● 90.子集II
自己的做法,其中判断断的字符子串是否有效参考了代码随想录的代码,自己真不一定做出来。有重复元素,先排序,后去重。只计算第一个元素的树枝,其余基本和前面的组合题一样。代码随想录里直接在原字符串进行修改,还用了erase,比较危险。子集和组合问题非常像,只是结束条件不一样。原创 2023-03-28 21:44:49 · 52 阅读 · 0 评论 -
代码随想录|day22|二叉树part08----235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点
加判断,看pre是否为空,空的话返回root,不空判断pre的val和插入val之间的大小。另外我判断这个插入是从上至下的,因此用到了相当于前序遍历,没有很复杂。答案:虽然一次做对,但这道题中间的思路算不上清晰。写出大体框架,这道题比较特别的一点是,找到要删除的节点、和确定的去删除并改造二叉树,都需要递归。其左子树转移到其右子树的最左节点的左子树上,然后右子树顶替其位置,由此删除了该节点。来明白了思路试着写出我的代码!想的完全错误,逻辑上就不对啊啊啊啊啊啊啊啊!原创 2023-03-22 14:44:32 · 229 阅读 · 0 评论 -
代码随想录|day20|二叉树 part06 ● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树
样例中最小节点 可能是int的最小值,如果这样使用最小的int来比较也是不行的。此时可以初始化比较元素为longlong的最小值。其实跟代码随想录上的是一样的。自己的做法,代码随想录的思路相同,我的更好理解。原创 2023-03-20 16:40:38 · 55 阅读 · 0 评论 -
代码随想录|day17|二叉树----110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和
全部链接:腾讯文档原创 2023-03-17 23:53:01 · 53 阅读 · 0 评论 -
代码随想录|day15|二叉树篇---- ● 226.翻转二叉树 ● 101.对称二叉树
【代码】代码随想录|day15|二叉树篇---- ● 226.翻转二叉树 ● 101.对称二叉树。原创 2023-03-16 22:54:14 · 128 阅读 · 0 评论 -
代码随想录|day14|二叉树篇---二叉树的三种递归+n皇后+层序遍历
另外,棋盘类型是vector,一开始写成了vector,还查了怎么初始化,报了几次错。因为这里只注意非递归迭代版,递归版只需要在原先的基础上 稍微改动一下顺序即可。一开始写了三个函数,分别判断是否在同一列、同一左右斜线,然后超时了。原创 2023-03-14 20:19:46 · 61 阅读 · 0 评论 -
代码随想录|day7|哈希表篇--454.四数相加II ●383. 赎金信 ● 15. 三数之和 ● 18. 四数之和
代码随想录原创 2023-03-07 15:20:42 · 179 阅读 · 0 评论 -
代码随想录|day6|哈希表篇-- 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和
代码随想录原创 2023-03-06 23:04:56 · 327 阅读 · 0 评论