【LeetCode】23.代码随想录系列刷题总结
0.要点
0.1数组
二分法
双指针
滑动窗口
0.2链表
虚拟头结点
增删指定节点
链表相交
环形链表
0.3哈希和双指针
哈希用于查重,双指针可将时间复杂度降低一个量级
0.4字符串
需要多用模拟思维
KMP算法可以通过对每个字符建立出现位置记录来规避掉
0.5双指针
用于数组、链表、字符串等线性结构上
快慢指针
对撞指针
0.6栈与队列
栈、队列、双端队列、优先队列
优先队列比较重载:
1 class myCmp{ 2 bool operator()(const xxx p1,const xxx p2){ 3 return p1<p2; 4 } 5 }
注意:stack和queue不是容器,称作容器适配器,底层用deque来实现
0.7二叉树
略
0.8回溯算法
0.9贪心算法
0.10动态规划
0.11单调栈
1.投入
跟随代码随想录的设计范围和题解刷了不到1个月,共计150+题,第一遍刷完大概用了20天,第二遍刷完用了大概1周。效率不能算高。
因为刷过剑指Offer系列,所以一些基本的思路是有的,最起码也有一个暴力解法的思路,但题解区、评论区好多精彩解法出没,从中可以学习很多。
2.收获
剑指Offer系列的优点是题选特别准确,每个小领域两三道题,但经典就意味着精干,数量有限,难以锻炼出系统思维。对于新手往往每题都是一个槛,看过题解才会有些许思路。
代码随想录的优点是题量较大、成体系、有喜闻乐见的“模板”如“回溯算法三部曲”、“递归三部曲”、“动态规划五部曲”,这些东西对小白理解不友好但一旦做过一两题之后就会发现它的美妙,会不自觉得按照这个模板来思考问题。先僵化、后固化、再优化。
按作者的想法是每日一题,但如果是集中学习的话基本上每天可以完成1周的安排。
刷完剑指Offer之后觉得知识体系、思考能力还比较脆弱,对剑指系列有些过拟合。特别是想多刷一些动态规划的内容因此开始了代码随想录系列,从个人总结到资料总结,效果可以说是大超预期,感谢代码随想录的作者、我的老学长Carl。
3.不足
1.个人方面,在过去一个月常常全天从早到晚坐在LeetCode前才完成这样的数据,成本巨大,后面必然不可能再有这样的巨量投入。那么就需要培养日常闲暇刷题的标准和效率,持之以恒。
2.平台方面,最开始是在牛客上刷的剑指Offer系列,而代码随想录是基于LeetCode的,都用下来发现牛客的用户友好性远超LeetCode,只是LeetCode的社区更成熟一些。如果可以个人还是倾向于选牛客。
4.未来
1.代码随想录还有很多扩展题目没有来得及做,接下俩可以保持关注,跟随Carl的脚步;
2.目前接触的最复杂的题型就是动态规划了,但实际上中间的KMP算法、快速乘法、后续的图算法还有待涉猎;
3.保持刷题,保持好奇。
本文作者:啊原来是这样呀
本文链接:https://www.cnblogs.com/OhOfCourse/p/17051881.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步