CS-OA cs-vo Faang

Google的LeetCode刷题攻略

同学们大多都在LeetCode刷。但了解过的同学也知道,LeetCode的题量足有2000+,不论是在花费的时间or刷题的顺序上,对留学生来说都是不小的难题。

如果你正陷入算法有硬伤,刷了上百道还是0 Offer的死循环中,那么接下来这个由谷歌在职大神LeetCode刷题攻略一定值得你看看!

这份攻略中,刷过的同学推荐从这位谷歌Waymo(无人车)工程师总结的刷题笔记开始

阶段1: 只做官方leetbook (初级-> 中级 -> 高级算法)周末花半天刷一个章节,后续变成一周内分散着刷完一个章节。 阶段2:找固定的list,坚持每天刷题,开始是用Grind75定制列表,现在开始在字节校园打卡每日一题。 如果时间比较充裕,我每周都会参加周赛,现在基本上一个月一次的频率。

1.放弃“要靠自己做出题”的执念 之前我之所以坚持不下来,是因为我太菜但不想承认我菜:如果想一题要好久,写完了又发现错了得重写,那么索性不如不要开始,这样也不用直面这样的痛苦。但是,所谓破不立”,只有在最开始放弃“要靠自己做出题”的执念,承认并面对自己的弱点,才能够变得更强。

随便打开中文leetcode (即力扣)的题目,在评论区里也许就能找到一个搞笑的吐槽,题是做不出来,但是苦中作乐第一名。这种坦然承认自己弱,但是又不会放弃的态度,让我在刷题的时候真的会有陪伴感,也会更轻松。

(2) 设定思索的时间 在我最开始的时候,我给自己设了一个死时间:一分钟,超过一分钟我就不再思考,直接看题解。重要的是,即使我在时间内没想出来,我也不因为这一点而责怪自己。 随着刷的题越来越多,我逐步延长这个时间,给自己和水平相符的挑战,而不是像曾经的我,一上来就使劲地想,想司5天长地久,那完全是错误的方法

2.尽可能简化操作步骤 要想驯服自己的大脑,就需要尽可能地快速、简单的操作。曾经我每次刷题前都会想要刷哪个章节的题,要刷哪一题,刷完了要不要做笔记,这无形中就浪费了我的意志力,也让我没办法坚持下去。因此,要尽可能地简化刷题的操作步骤,才可能更好地坚持。

(1) 使用题目列表 其实现在有很多书和个人总结出来的题解列表,但对初学者友好的题目列表并不多,递进式的也比较少。 我使用的并且也最推荐的还是官方推出的leetbook,初级、中级和高级算法都是按照类别进行分类的面试高频题,直接无脑刷可以节省很多无用思考时间。

刷完了这三个leetbook之后,就用Grind75定制了一个我刷完这三个leetbook之后,列表,支持选择刷题的周数、题数、按照类别或者难度排序。但是我大概只刷了三四周,因为Grind75显示的是英文题目,而且不显示题号,如果用中文力扣的话需要一些时间来对照。 每日一题 现在我是参与着字节校园的每日一题打卡,因为很多题都是重复写过的,所以一些题会二刷以及拓展和延申。 不管是哪一个列表,重要的是要找到一个适合当下水平的列表,然后不需要思考、不需要总结,直接从第一题刷到最后一题,当做的达到了一定的数量,才能搭建出一个基础的框架,然后再谈对框架进行细化和分类。

(2) 工具链: vscode插件 + github仓库总结

建github仓库来存放写的题,与vscode的leetcode插件组合,就能够实现“搜索题目-获得函数-写-提交-修改-再提交的整个流程,直接脱离浏览器,非常方便。

仓库添加简单的markdown文档,存储简单思路笔记。看题、做题、记笔记全部都在vscode,整个流程非常轻量化

.构建自己的成就感 力扣有很多厉害的大佬,在这之上还有codeforces,ACM,如果永远和他们对标,那么就难以有开始的勇气。所以,在刷题的道路上,我学会了放弃和他人的比较,只和自己比较,只要完成一道题,那么就算是我的成就,我就会在内心鼓励自己

(2) 维护属于自己的知识库 在我做题的后期,每做完一题之后,我会按照知识点归纳到我自己的语雀知识库里,形成只属于自己的知识库,这样更便于后续的复习和查阅。 前期为了能坚持可以先写简单的笔记,不需要做到这一步后期有了基础的框架之后再做效果会很好,看着满满的笔记真的会比较开心和有成就感。

Leave a Reply

Your email address will not be published. Required fields are marked *