刚刚,又完成了代码随想录二刷!
有不少录友问我,没有算法基础,代码随想录一刷需要多久,二刷需要多久之类的问题。
正好 这位录友前天刚刚做了二刷总结,把自己从零基础到二刷代码随想录的心路历程都详细的写了下来,分享在星球里。

相信这篇总结对录友们刷题会有很大的参考意义,特别是算法基础薄弱的录友。
以下分享给大家:
--------------------
我是10月底开始一刷随想录的,也是那时候刚接触力扣,当时甚至连哈希表是什么都不知道。
保持着每天三到四个题的速度,赶在12月31号结束了一刷。
一刷的目的一方面是为了熟悉各种数据结构和算法,另一方面是为了培养良好的代码书写规范。(习惯了看卡哥的代码和注释,偶尔去CSDN看帖子里贴的代码,我真是头大)
一刷的时候,每天大概会花两三个小时刷题和看题解,有点囫囵吞枣的感觉,卡哥一般会给一个体现思路的比较详细的代码,然后会给一个精简版的代码,精简版我是从来不看的。
二刷是从1月1号开始的,每天六个题左右,正好花了我一个月,但相较于一刷,二刷的时候平均下来,每个题我花的时间更多了,主要是自己思考比较费时间,实在想不出来才会看题解。
当然了,二刷的时候还是很愉快,很有成就感的,因为能明显感觉到自己的进步。
二刷主要遇到了三种题:
一种是自己能AC的,写完之后会对照卡哥的题解,看看自己的不足;
一种是比较难,但是有一定印象的题,印象是指我还记得一刷的时候怎么去处理问题的难点,然后自己写代码实现,例如“替换空格”里resize和反向遍历就是破题的难点;
最后一种就是二刷的时候仍然没有思路的题,这种题主要是贪心算法和一部分需要数学推导的题,例如“环形链表”,我记得这个题需要双指针,但就是不知道如何设置双指针。
这些题我都单独列了一个题单,打算多看看。
印象深刻的是动态规划部分,一刷的时候对于卡哥写的五个解题步骤体会并不深刻,dp数组上来就全部初始化为0,二刷的时候才真真体会到,为什么要先确定状态转移方程,再来初始化。
还有背包问题,一刷的时候根本就想不到如何将实际问题抽象成背包问题,二刷的时候则对象征背包重量和物品价值的量有了一定的敏感性。
我也总结出了一些刷题的心得,但是还比较模糊,比较偏向于直觉吧。
例如看到升序数组会想到二分,看到出现或者查找会想到哈希等等。
现在拿到一个题,我会先看函数返回的数据类型,然后再去考虑用什么样的数据结构,如何维护数据,如何去遍历数据等等。
当然,也体会到了自己的不足。
随想录的题都是每个部分划分好的,动规的题自然会想动规的解法,但每日一题和剑指不是,我时常在解每日一题时,上来就暴力回溯超时,然后才会考虑别的解法。
主要还是因为之前刷题时,没有自己去考虑时间和空间复杂度,之后刷题时,我会有意识的计算这些。
还有一个不足就是对于代码的调试,今天刷剑指才发现力扣上的剑指只有一个测试用例,一但没有AC,调试起来就比较难受,之后也会有意识地培养这方面的能力。
Anyway,趁热打铁二刷了随想录,收获还是蛮大的,三刷可能就要等到秋招面试的前一个月了,下一阶段的计划是半个月内刷完剑指,以及完善上文提到的不足之处。
---------------------------
这位录友是 21年10月份的时候,加入的知识星球,这是他当时的自我介绍

之后,他在星球里的打卡就没有断过了。



其打卡一直持续到昨天,也就是2022年2月4号

所以有计划,有执行,有总结,做什么事情都不会差。
网址:programmercarl.com,200道力扣题目刷题顺序,详细题解,支持C++、Java、Python、Go、JS等多语言版本,一个你只要发现,就会收藏的硬核算法学习网站。
觉得不错的话,还请小伙伴 点赞 支持下,希望能帮助到更多同学 ❤️