作为一名 ICPC 的参与者,Codeforces 评分 2100,LeetCode 评分 2750,我各种方法都尝试过了。我拿到了好几个 FAANG 的 offer,也和一些顶级的竞争性程序员交流过,其中也包括只刷 LeetCode 的人。我的刷题经历还不到两年。说说我的真实看法吧。这个板块里 95% 的人方法都错了。错得离谱。买课、买会员、死记硬背时间复杂度或者题目、追求刷题数量。这些对真正的提升毫无意义。我注意到真正厉害的人都有自己钻研的劲头。他们不会上来就问答案,也不会本能地想走捷径。我是怎么达到现在这个水平的?其实没那么玄乎:我每周都会刷题。(对,不是每天,那样只会加速燃尽) 除了比赛,我只刷对我来说有难度的新随机题(需要思考 30 分钟以上) 我几乎从不看题解,除非实在没办法了。(新手可以看)先说清楚一点——是的,面试题完全有可能快速做出来(看到新题后不到 5 分钟)。这根本不需要“死记硬背”任何东西。解决问题就是模式识别,所有东西都可以在当下推导出来。学习像 Dijkstra 这样的算法不是“背”,你可以深入理解它,自己推导出其中的组成部分。Atcoder 也有类似的侧重 DSA 的题目,但质量和趣味性要高得多。 CSES 有更多高质量的标准题,能教你解决问题所需的模式。CSOAsupport 有高质量的分专题学习材料和题目。我不推荐的一些资源包括:这些题单的通病是,等你把每个专题都刷完一遍,早就忘了之前做过什么了。你必须刷随机题。 Neetcode(暴论)。Neetcode 本身就不是一个很强的程序员。我不确定他怎么出名的,但根据我的估计以及他自己的说法,我觉得他 LeetCode 评分不会超过 2000。当然,如果你喜欢他的讲解,那没问题,但对我来说,他的路线图完全说不通。把 DP 和贪心放在最后。我推荐的资源都没有付费版本,而 Neetcode 有。 Striver a-z sheet 或者 TLE eliminators 或者其他任何刷题阶梯——这些都近乎诈骗。我不想深入细说,但有一个结构化的“路线图”其实没什么意义。 LeetCode:LC 上作弊的、题解被刷赞农场占领的、405 连接错误的、低质量题(上周周赛的 Q3 和 Q4 都错了)比比皆是。 LC 的题解是随便什么人都能写的,有时候是低分选手写的,所以你可能在跟只知道把文字排好看的菜鸟学东西。