终于啊,六十天说长不长说短不短,但是按时坚持下来的人也确实是少,非常高兴自己能够做到打卡标语的那样(完美坚持)
要总结的话,东西还是很多的
开了个目录来存放各个题目,并且道题目都有自己看来清晰的解释
从链表说起吧
链表这一章节,我认为,链表相交这道题的做法就很有趣,可以不同与其它的双指针,设置虚拟头结点的做法,而是直接将两链表拼接的思路
如何达到拼接的效果的代码我也觉得是新学到的,利用是否为空来判断
接下来就是栈与队列
对应其余的我认为主要把我栈跟队列这种数据结构的特性来操作,那么题目就不会特别难解,而比较有趣的解法也是新学到的做法在1047这道题,由于是相邻重复项,那么可以直接入栈,当前元素如果和栈顶一致那就出栈即可,而在拼接的时候也有讲究,这个应该是java不同的地方吧
第一次学习到了+=和分开相加对于字符串拼接来说其实是有一定区别在的
另一种解法就是双指针去解,解法也是很巧妙
贪心章节
我认为这一章节的最大启发就是,对于两个维度的题目,就要先考虑一个,再去考虑另外一个,避免顾此失彼,将解题变难,代表的就是 406,135,还有区间重叠问题也是值得多刷几次的
数组和字符串章节就一起说了,这里的字符串章节我跳过了KMP算法,二刷补上
这两章节其实不是特别难,要说注意的点,那就是思想。比如59,如何把控边界,是一个关键问题,尽量保持执行的一致,即找到普适性的规律
回溯章节
这个章节,值得关注的点就是,排列,组合的区分,如何区分是排列还是组合,在处理回溯问题的时候可差别大了,另外对于回溯的题目,想清楚的地方还是在于,循环的时候是否要用到下标,以及终止条件,剪枝,这几个内容在做题的时候都是需要琢磨目明白的
哈希表
这里的话首先是让我认识到了哈希表这种结构,懂得在去重,计数等问题都可以去使用哈希表来解决,题目的理解难度不大 ,值得注意的就是标注出来的15,三数之和的做法,如何去重,如何选取元素,这章节给我带来的也有思考上的提升
二叉树章节
一开始做是真折磨啊,以前学习的时候就没太仔细,刷题的时候可劲后悔,这章节给我带来的不仅是思想上的提升,还有实现代码上的提升,硬逼着我去调试很久,一层一层的去理解
贴上我用txt来演示的501的过程...即使有点粗糙吧哈哈哈哈,但是没关系,自己懂了就是最重要的,对递归理解更深刻了,没有以前那么一头雾水,不知道哪层归哪层
动态规划
动态规划的每个部分都值得好好去研究,我觉得收获最大的是,不再像以前一样对dp题无从下手 ,而是有一定能力去尝试并且解出,我觉得这一章节要说哪个重点,我觉得都挺重点的,要讲真的能讲很多出来,甚至是每道题都能拿出来总结,这里就不多赘述了,简而言之就是思维上的开阔。
单调栈
这一个章节的做法是以前从没接触过的,对我来说很新奇,理解也并没有很到位吧,二刷结束后再谈谈新感受