当时我的目标是刷题一周通过面试,总共可以给到的学习时间大概是4小时×7天=28小时。在此之前嘛,基本是没打开过力扣这个网站的水平。Step 1:看课(灵神tql)去B站上看灵茶山艾府的《基础算法精讲》,总时长270分钟左右。因为没时间全看完,我会按照下文中的分类有重点地看,非重点的地方部分2倍速看。个人觉得0基础不建议直接上手刷题,一道题都别刷,很浪费时间。LeetCode这种东西还是比较套路的,直接看课就会很有帮助。看课的过程中遇到没听懂的概念,就随手问一下AI——“用大白话解释一下什么是滑动窗口”“动态规划到底和递归有什么区别”。AI的好处是能换着花样给你讲,有时候老师讲了一遍你没懂,AI换个角度说你就突然开窍了。这一步不用花太多时间,卡住了就问,问完继续看课。Step 2:力扣刷题+了解时空复杂度的计算我刷的题单是LeetCode Hot 100,但我只刷了其中的30道,再加上寻找峰值、快排、有障碍路径DP等常考题,总共在40道左右。分类刷,从Medium到Hard。同一类中的Medium如果能够举一反三,就可以少刷几道。比如会了0-1背包问题,就可以不用写打家劫舍啦。我的刷题顺序:T0(very常考,思路明确、刷起来快):双指针、滑动窗口、二分查找、动态规划、多维动态规划T1(思路重要且常考):图论、回溯链表、二叉树:常考、思路简单、刷起来快,但ACM模式输入难写T2:剩余其他刷题的时候也要用AI灵活辅助:每做完一道题,把代码和思路贴给AI,让它帮我看看时间复杂度算得对不对、有没有更优的解法、如果换个数据规模会不会爆。AI不会直接替我刷题,但它可以当我的代码审查员。把做错的题也整理给AI,让它帮我总结这类题的共性规律——“这三道题都是滑动窗口,它们的边界条件处理有什么共同点?”有时候我自己总结不出来,AI一归纳就清楚了,比手动整理快很多。最后再搜搜要面试的公司面经,看看他们爱考什么,针对准备一下。还有,别忘记关注时空复杂度的计算哦,面试可能会问到的。Step 3:重复+熟悉ACM模式下的输入输出今天刷完的题可能明天就忘了,所以要经常重复。而且面试的时候很容易紧张,有时要靠肌肉记忆来写。我会把错题本定期扔给AI,让它随机抽几道题让我口头复盘——我来说思路,它来判断对不对。这种低成本的重复比重新敲一遍代码效率高很多,通勤、排队的时候就能搞,不用专门坐下来写代码。ACM模式下输入输出也很重要,别力扣刷多了只会写核心代码,面试就傻眼了。可以去搜代码随想录的ACM输入输出文档,其实需要记住的输入输出格式也没几种。最后一点“理解题目思路,使之能够在新题中被复用”是速成的核心思路。速成是不适合背题的,所以吃透有限的题 > 做更多的题。对了,AI还有一个用法我差点忘了提——如果你有一道题反复看答案都看不懂,可以让AI给你出两道同类型的简单变体,先做简单的再回来看原题,往往就通了。这个办法我用了好几次,挺管用的。(某一轮面试的时候还是被一道没见过的Hard题制裁了,不过靠我自己刷的“LeetCode Hot 40”,我也给出了两种解题思路最终蒙混过关。有时间还是建议把Hot 100都刷完,刷熟了还可以看看高频面试150。)