- 博客(26)
- 收藏
- 关注
原创 代码随想录算法训练营第三十天 | 122.买卖股票的最佳时机II ,55. 跳跃游戏 ,45.跳跃游戏II,1005.K次取反后最大化的数组和
总是差些细节,还有就是在做之前没有将思路梳理的特别清晰,到后面发现哪哪不对,开始发懵,不过做贪心倒是省了不少时间,不会直接看题解。说实在的,我在代码随想录题解看的题,还以为每天只能买或者卖股票,当我看力扣题目的时候才发现并不是这样,难怪之前看题解有点懵。人傻了,原来答案这么简单,我压根没想到。方法二有点没懂,有机会再看看吧。1005.K次取反后最大化的数组和。122.买卖股票的最佳时机II。
2024-06-28 19:40:19 234
原创 代码随想录算法训练营第二十九天 | 455.分发饼干 ,376. 摆动序列,53. 最大子序和
确实如理论基础那一章节所说,没有思路就直接看题解,求摆动序列没有什么思路,完全不知道怎么处理序列,而且画图看着要更直观一些,还有几个特殊情况也是容易漏掉而且不太好想的。第一次接触贪心,之前没学过,这题直接看了题解似乎不难。这里也推荐大佬灵茶山艾府的前缀和解法。
2024-06-27 22:56:05 195
原创 代码随想录算法训练营第二十八天 | 491.递增子序列 ,46.全排列 ,47.全排列 II
去重没写对,我把used数组建在外面了,也没想到题解里的去重是每次调用函数都在内部创建一个新的used数组,极大的增加了空间复杂度,但是也没有比较省空间的解法了。既然是排列,完全可以先sort之后再去重。树枝树层去重有点懵,多看几遍。
2024-06-21 01:37:20 275
原创 代码随想录算法训练营第二十七天 | 93.复原IP地址 ,78.子集 ,90.子集II
不太容易,我看力扣官方题解下面有个网友写的题解也很棒,s.substr(index,i)>"255"这个写法很巧妙,还是要多积累,多看题解,集思广益。就是在子集的基础上加剪枝,剪枝写法跟之前的组合总和写法一样。把pushback放在终止条件的判断里了,怎么都做不出来。
2024-06-20 01:25:04 300
原创 代码随想录算法训练营第二十六天 | 39. 组合总和,40.组合总和II,17.电话号码的字母组合
这个就是把每次递归调用的startIndex改成i就行了,剪枝还是看了题解,自己做的时候没想着用剪枝。小细节弄错了,还有就是复习一下substr的用法,差点要用构造函数去构造子串了。题解的剪枝太妙了,多学习一下。
2024-06-19 02:24:04 274
原创 代码随想录算法训练营第二十四天 | 77. 组合,216.组合总和III,17.电话号码的字母组合
经典问题,之前做过几次,这次一写还是容易出错,在递归调用自定义函数时把索引值写成了startIndex,导致结果不对,改为i + 1之后就对了。剪枝操作忘记了,看了题解之后感觉9 - (k - path.size()) + 1在这道题里没什么作用,对上一题还是有用的。之前做过,这次又做出来了,但是跟题解相比还是有可以优化的地方,多多学习。17.电话号码的字母组合。
2024-06-17 02:12:12 380
原创 代码随想录算法训练营第二十三天 | 669. 修剪二叉搜索树,108.将有序数组转换为二叉搜索树,538.把二叉搜索树转换为累加树
还以为很复杂,但其实没有几行代码,有些东西就是想不到,看题解才恍然大悟,唉。还以为左右子树要分开考虑呢。让我给想复杂了,还没做出来,看了题解才发现很简单,还是要多练。用的类似二分的写法,注意细节,终止条件很容易写错。108.将有序数组转换为二叉搜索树。538.把二叉搜索树转换为累加树。669. 修剪二叉搜索树。
2024-06-15 14:47:21 279
原创 代码随想录算法训练营第二十二天 | 235. 二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作,450.删除二叉搜索树中的节点
左子树不为空和右子树不为空的处理方法没有想到,最后看了题解才恍然大悟,还有题解给的第二种解法没看懂,不知道交换值之后结点是怎么删除的。力扣官方题解下面有个人用二级指针写了比较简短的代码我还没研究明白,有时间研究一下。没有想到这题要怎么找最近,看题解才反应过来,原来左右子树各有一个的话这个结点就是最近公共祖先,下次做题之前应该试着归纳一下,不要上来就做。做出来了,但是跟题解比还是不够简洁,还是要多练,多反思有没有可以优化的地方。235. 二叉搜索树的最近公共祖先。450.删除二叉搜索树中的节点。
2024-06-14 01:19:26 307
原创 代码随想录算法训练营第二十一天 | 530.二叉搜索树的最小绝对差,501.二叉搜索树中的众数,236. 二叉树的最近公共祖先
刚开始以为是任意两个结点,但其实二叉搜索树任意两个结点的差值最小的情况肯定在相邻两个结点之间出现,做过之前的题再做这个就容易多了。看题目还以为很难,没想到题解处理的方法那么巧妙,递归这方面还需要多加练习。跟上一道可以用同样的做法,题解morris那个暂时跳过。530.二叉搜索树的最小绝对差。236. 二叉树的最近公共祖先。501.二叉搜索树中的众数。
2024-06-13 00:45:57 384
原创 代码随想录算法训练营第二十天 | 654.最大二叉树,617.合并二叉树 ,700.二叉搜索树中的搜索,98.验证二叉搜索树
跟105和106思路很像,这两道学会了这道也没问题,就是在终止条件上容易犯错。官方题解可以多看看,提供了不一样的思路。没想到这么多细节,还是看了题解,力扣官方的题解提供了另一种思路,推荐大家去看。完全忽略了二叉搜索树的性质去做的,倒也能做。做出来了,但还是有可以优化的空间。700.二叉搜索树中的搜索。98.验证二叉搜索树。
2024-06-12 01:48:12 332
原创 代码随想录算法训练营第十八天 | 找树左下角的值,路径总和,从中序与后序遍历序列构造二叉树
做路径总和ii的时候我在纠结,是在当前函数处理左右结点的val还是处理当前的val,这也是很多题解不同的地方,要是前者的话就要在函数开头判断target,后者的话要在处理完当前的val之后再判断。一眼层序,递归没想到怎么做,看题解才发现是回溯,回溯不是很熟;也建议看看力扣官方题解,从右往左遍历确实有意思,没想到。看视频之前自己先试了一遍差点意思,看完之后就明白了;然后用迭代的话我没想到,还是看了题解用的是pair。很多细节处理不好,还是看题解才能懂,力扣官方题解和网友的题解都可以参考。
2024-06-09 14:29:56 483
原创 代码随想录算法训练营第十七天 | 110.平衡二叉树,257. 二叉树的所有路径,404.左叶子之和
以前做过现在忘了,看了一遍视频后试着自己做出来了,递归这玩意,要是自己模拟一遍容易陷进去,最好的办法就是不模拟。没思路,看了题解,后来发现leetcode上很多网友给出的题解也很不错。257. 二叉树的所有路径。
2024-06-07 22:33:09 496
原创 代码随想录算法训练营第十六天 | 104.二叉树的最大深度,111.二叉树的最小深度 , 222.完全二叉树的节点个数
当时这两道跟着层序遍历一块做了,用递归还是很方便的,把网站上说的三要素搞懂。最小深度这个我贴一个我比较喜欢的力扣官方题解评论区里一名网友的题解,稍有改动。同样很简单,不多说。222.完全二叉树的节点个数。104.二叉树的最大深度。111.二叉树的最小深度。
2024-06-06 22:41:48 513
原创 代码随想录算法训练营第十五天 | 层序遍历,226.翻转二叉树 ,101. 对称二叉树
在写层序遍历Ⅱ的时候一直报no member named 'levelOrderBottom',检查好几遍才发现原有的函数名被我不小心改了,所以报错,也没有给我指出哪一行有问题,憋了好一会。几个月前做过,现在做还是有点陌生,处理对称的逻辑一定要学会。层序和递归都可以做,递归先swap后swap都一样。104和111可以用递归,就是不太容易理解。116题感觉力扣官方题解更简便一点。
2024-06-05 23:42:54 539
原创 代码随想录算法训练营第十四天 | 递归遍历,迭代遍历,统一迭代
我一看就想起层序遍历,用栈实现的迭代遍历基本没怎么用过,后序的处理方式太妙了;写中序要弄清楚每一步都做了什么,入栈的是什么,要判断的条件等等都要弄清楚,可以自己多模拟几遍加深印象,if和else分支的操作。可惜没视频看,在纸上画画图模拟一下也可以理解。
2024-06-05 01:13:43 561
原创 代码随想录算法训练营第十三天 | 239. 滑动窗口最大值,347.前 K 个高频元素
打算把所有代码都写到一个函数当中,结果总有几个用例不通过,最后照着力扣题解改对了,自己判断对头出队的条件写的不对。听说过优先队列但压根没用过,受教了,我第一感觉也只是用sort做。两个入队判断加等于号就不对了,出队判断可以写==347.前 K 个高频元素。
2024-06-04 01:18:47 565
原创 代码随想录算法训练营第十一天 | 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值
比较简单,看题解里直接用string也能实现,我都忘了原来string还有push_back和pop_back和两个函数了。做这题时把num1和num2顺序搞反了,导致涉及减法和除法的用例都没通过。在处理右括号多余的情况时把判断条件给写反了,直接报错,还是得多注意。1047. 删除字符串中的所有相邻重复项。150. 逆波兰表达式求值。
2024-06-01 21:24:36 415
原创 代码随想录算法训练营第十天 | 232.用栈实现队列,225. 用队列实现栈
做之前感觉很简单,一提交就发现自己忽略了一些细节,要将stIn的数据push到stOut之前要先对stOut判空,还有判断empty要两个栈均为空才算empty;通过之后感觉也就那么回事吧,另外随想录题解处理peek函数有点巧妙,我确实没想到。尝试一个队列实现成功了,不多说。225. 用队列实现栈。232.用栈实现队列。
2024-05-31 21:32:59 494
原创 代码随想录算法训练营第九天 | 28. 实现 strStr(),459.重复的子字符串
我把求next数组的过程都放在strStr函数当中,其中next数组的创建方式与题解不同,因为needle字符串最大长度是10^4,我直接申请的10001,题解中用的是vector,可以直接用needle的大小来创建数组;还有就是我在最后j的判断原本写的是j == needle.size() - 1,导致测试用例不通过,大家不要犯这样的错误。还是看完视频讲解后写的,最后要记得判断next[len - 1]是否为0,不然会有用例不通过。459.重复的子字符串。
2024-05-30 23:12:26 550
原创 代码随想录算法训练营第八天 | 344.反转字符串, 541. 反转字符串II,卡码网:54.替换数字 ,151.翻转字符串里的单词,卡码网:55.右旋转字符串
只过了十几个用例,跟题解一比,有太多冗余的地方了,判断完全可以都写在循环里,reverse函数是左闭右开,size-1根本没有必要,k也不需要判断是否小于size,还是题解的代码比较优雅。比较长的题还是建议在把题解看懂后自己再手敲一遍,官方题解可以看看,还有其他网友写的空间复杂度为O(n)的也可以学学,都挺有用。先看了一遍题解再写的,自己写的时候漏了一步oldIndex--,用双指针解这道题很巧妙。曾经在PTA的乙级训练题里做过,当时对这个解法印象很深。不多说,不过可以顺便复习一下reverse函数。
2024-05-30 02:05:07 674
原创 代码随想录算法训练营第七天 | 454.四数相加II, 383. 赎金信,15. 三数之和,18. 四数之和
有了前一题的经验就好处理多了,不过还是要注意这题跟前一题不同的剪枝操作。我在做题的时候把第二个指针的去重放在最后循环的前面了,导致第二个指针在循环内移动的过程中没有进行去重,只在循环前去重了一次,case2就没过。没想到怎么做,看了一下代码随想录的思路然后自己写,最后还是照着题解改的,自己写的去重完全就是文章里不提倡的写法,而且我在nums[i]去重那一步把两个条件写反了导致数组越界报错(应该是越界),我还一直觉得没问题啊怎么会报错呢,后来才发现,改完终于过了,题解里的去重剪枝操作很赞。
2024-05-29 00:54:12 537
原创 代码随想录算法训练营第六天 | 242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和
这道题用c++11新特性遍历字符串会报错,好像是把字符串的'\0'也给遍历了,导致record索引为负值,后面遍历record数组同样方式遍历也会报错,原因不明。刚开始还想用unordered_set去做,发现数组有重复元素时没法返回下标,后来试试unorderedmap才行,其实这种一开始就应该这么想,能少走些弯路。取数值在学单片机的的时候用烂了都快,不多说。242.有效的字母异位词。349. 两个数组的交集。
2024-05-27 05:09:05 490
原创 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II
还是一道以前做过的题,官方题解的方法二跟代码随想录题解是一个意思,但不太好理解,代码随想录题解有个细节就是用swap函数让curA为最长链表头,lenA为其长度,这样就不用多写一个else然后再重复写一大串代码了,我写这题的时候习惯性的构造了一个虚拟头结点,其实压根没必要。这题以前也做过,快慢指针还记得,后面找入口忘了,又复习了一下找环入口的推导,还有就是后面可以省一个index,用fast或者slow接着跟另一个index比。这题要注意的是快指针比慢指针多走n+1步,其他的没啥说的。
2024-05-25 22:11:10 729
原创 代码随想录算法训练营第三天 | 203.移除链表元素, 707.设计链表,206.反转链表
这道题写完之后提交却一直报错,最后跟代码随想录的题解对比了一下,发现少了一个head重新指向虚拟头节点的next结点这个操作,我的理解是,头结点的数值有可能等于val,会在后面的操作中被删掉,所以在return之前要让head重新指向虚拟头结点的下一个结点。做之前思路很明确,一到亲自动手写就错误百出,这道题需要在类里再定义一种结构体,并在类的构造函数中new一个该结构体,我在写的时候在构造函数中new个自己出来,直接栈溢出了,还有就是不要忘了index小于0的情况,还有释放内存后指针置空,其他的还好。
2024-05-25 05:46:55 869
原创 代码随想录算法训练营第二天 | 977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II
第一次提交的时候发现测试用例都没过,数组里出现了非常大的数,仔细检查发现没有创建新的数组进行拷贝,在原数组上操作导致某几个数平方了很多次;还有对vector构造函数印象不太深刻。浏览官方题解发现有网友提到可以将左值取负再和右值判断,亲测可行。求和的那句代码放错位置了,看了文章才发现,有点粗心,这道题目还好。确实越做越乱,要考虑的细节很多,还是视频讲解看着舒服,这里还要多练。209.长度最小的子数组。
2024-05-23 23:47:17 887
原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
还是按照以前的习惯写了左闭右闭,答完之后看文章才记起不同的区间处理方式有不同的写法,受益匪浅,但是左开右闭我没想到怎么处理,在这里贴一段网上找到的代码。直接尝试双指针失败了,还是代码随想录给出的题解巧妙,也推荐看力扣官方题解的方法二,稍微有些改进。
2024-05-22 22:40:14 916
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人