大体感受
去年暑假跟着,回想起来半年多的时间内经历了不少变故, 更多的是心态上的变化。之前的一刷更多的是缓解没啥事做的焦虑,而二刷是在实习期间抽时间刷的,能做出来的题更多了,刷题的效果也更好。
刷题变化
最明显的变化就是一是改用了Java刷题,之前用C++,原以为语言转换会经历不小的阵痛,但其实磨合几天就过度过来了, 很多java的新的API不会,先问chatgpt,然后多写几遍就明白用法了,比如:
- Arrays类
- Stream对数组的操作;
- PriorityQueue定义比较器等。
这些算法作为整体的一步来说其实无关痛痒,但如果手写会浪费很多时间,之后刷题还是会接着练形成肌肉记忆。
还有就是GPT的引入对刷题产生了大变化,之前代码不能ac只会对照着题解一行一行校对,现在直接问Copliot就会指出哪里出现了错误,修改后还能形成自己的代码,记忆性也更强,debug的效率突飞猛进。
模块总结
数组与链表,本科数据结构的常客了,学习的更多是List和数组的区别,怎么更好的操作数组,list转数组,数组转list等;
栈与队列,声明优先队列的方法,范型,包装类。
哈希表与字符串,学会了java中map和一些字符串函数的用法,题目其实不是很难,以及java怎么更方便的操作字符串,StringBuilder的使用。
二叉树部分,之前的递归框架也没忘,能ac的题更加多了,更重要的是学会了调试。
回溯之前基本没接触过,接触过之后发现回溯其实就是另一个程度的递归,也就是遍历一个多叉树的过程,总之这两个部分是我二刷必须要注意的,锻炼递归的思维。
动态规划方面看题目更全面了,会根据dp五部曲慢慢分析题目,但推导dp数组这一步还是做的不是很好,以后会更加注意。
单调栈还是一如既往的难理解, 但hot100中有几题都是涉及单调栈的,感觉跟之前的优先队列又有所不同, 本质还是对普通栈进行的操作。
未来计划
以前可能会每道题都看看不同的解法,甚至优先掌握简便难懂的方法,现在觉得把hot100啃完就不错了,之后也会持续的刷代码随想录的常见题目, 不会贪多嚼不烂,再去搞什么算法竞赛之类的复杂解法了,因为已经明确了自己的目标是中厂和国企,不想去大厂卷了。
之后也会持续刷题,但可能总结不会写的这么详细了,题量也会增加,一天5道题左右吧~希望这次刷题能让我养成刷题的习惯,自觉的每天刷题练练手感。
同时会看下java/python常用的API,以及ACM模式,因为做了几场笔试发现leetcode的核心代码模式是远远不够的,笔试的时候很有可能处理输入输出都浪费了很长时间,之后刷题也会直接到牛客网刷,提前适应真题环境。有时间也会复习一些经典算法的代码实现,争取面试熟练写出。