刷力扣,定个小目标:每天 1 - 3 题,别断。日常别贪多,刷过量了,时间全搭进去,其他学习计划全泡汤,纯属本末倒置。正常每天花 0.5 - 2 小时就行,偶尔状态好,想冲刺,多花点时间钻研难题,提升更快。
刷题状态直接决定效果。先备好顺手的 IDE,没好工具,写代码又慢错误又多,纯添堵。自己也得精力充沛,疲惫时脑袋一团浆糊,效率低得可怜,别硬刷。总之,刷力扣时,好 IDE 和饱满精力,缺一不可。
新手刷力扣,理论不扎实、题量少、码风不成熟,咋办?重心放学习题解算法与代码实现上,别光追求刷题数量。拿出一半刷题时间钻研题解,品析码风,定期复盘,把知识狠狠焊进脑子。
刷题圈有个大坑:觉得刷旧题不如刷新题。大错特错!高中题海战术吃过的亏还不够?光追求新题,没空深挖旧题,进步就卡壳。对题目的深度理解,急不得,当下不懂,说不定哪天就顿悟了。像树遍历里的 Morris 算法,初见懵圈,刷多题回头再看,发现与自哈希有关,关键在迭代栈元素意义。抓住这俩核心,忘了细节也能还原算法,这才是真吃透。
前三条和最后一条的逻辑复杂度不同,采用了不同的润色要求。以下是原文草稿
有计划的每天刷题
刷力扣,每天做1-3道题,不要断,保持手感。如果是日常练习的话,不要做的过多,因为过多的话会花费很多时间,打乱当天的其他学习计划,每天花费太常时间在力扣上是本末倒置,我认为花0.5-2h就足够了。如果是某一天想加强训练,可以适当花费更多的时间做力扣题。
注意刷题时的状态
保证有良好的IDE以及自己精力的充沛,没有IDE环境,写代码效率较低,也容易出现书写错误。精神不太好,比如感觉疲惫,这个时候写题的效率非常低,不应该在这种状态下刷力扣。总之要保证日常刷力扣时有良好的IDE和充沛的精力。
学习为主思考为辅
这个之前有专门发过一个笔记,讨论学习题解和自己思考的关系。对于理论基础不够完善、做题量不是特别多、码风不够成熟的力扣选手,我认为要把重心放在学习题解的算法思路和代码实现上,这是重点。不用追求每天多做多少题,可以抽出在力扣上的一半时间去学习题解的思路和码风,然后定期复盘一下
一个错误的观点
回顾高中学习,我深感与其盲目刷新题,不如精研旧题。陷入题海战术,学习瓶颈极易出现,因我们只顾大量做题,忽视了对已做题的深度挖掘。要知道,深入思考一道题无法速成,如同认识事物,当下百思不解,日后却可能突然顿悟、见解深刻。所以,定期回看旧题,是吃透知识的关键。
通常,解完题我们仅停留在浅层认知,知晓解题思路与原理,却很少探究其根源。这种深层次理解难以言传,需靠定期总结、反复回顾、深入思考才能触及。
以树的遍历中的 Morris 算法为例,初次接触,深感精妙,费好大劲才懂原理。大量做题后再回顾,发现其思路与自哈希特性紧密关联,代码实现关键在于明确迭代时栈内元素意义。抓住这两点,即便忘掉其他细节,也能迅速勾勒算法全貌,相较单纯懂步骤原理,这无疑是更深刻、能让知识掌握实现飞跃的理解层次