如何科学的打开 Leetcode

2020 年 1 月 5 日 AINLP

Leetcode 对于学计算机专业的同学,就如 PhotoShop 对于学设计的同学来说,最熟悉不过了。

考虑到读者的范围比较广,先对 Leetcode 做个科普。

它是一个编程实践网站,主要注重于培养使用者的编程技巧,去解决一些巧妙的算法题。

这是它的官网,网站地址[1]

Leetcode 官网

很久以前,还是在大学的时候,有师兄对我意味深长的说,如果把 Leetcode 上面的题目做上七遍,就有很大概率能够通过谷歌的面试。

虽然有点夸张,这句话还是对我幼小的内心,产生了不小的震撼。毕竟,在当时的我看来,谷歌和赚钱,是同义词。

在 2019 年的秋招之前,我曾经系统的刷过一段 Leetcode 算法题。平均每天做一道,坚持了有三四个月时间,从三月份到七月份。

刷题记录,一个格子表示一天,颜色越深表示做题越多

这对我的秋招面试很有帮助,拿到了基本所有一线互联网公司的 offer,没有一次是因为考察编程题吃亏的。而且,其实之前我的算法编程能力也不强。

我的方法观里,有三个重要的点,分别是:

找到科学的刷题顺序学习优秀的解题方案及时整理题目的套路

找到科学的刷题顺序

目前 Leetcode 收录的算题题目,超过了一千道,数量非常之多。同学们也都是很有想法的人,于是,八仙过海,各有各的姿势。

蛮力刷题法 按顺序来,一道一道的做,从 001 到 999,希望自己的编程能力愈来愈强,最终天长地久。该法对吃苦耐劳式同学最佳。

规避挫折法 Leetcode 很人性化的把题目的难度划分为:容易题,中等题,难题。为了避免刷题时候,身心受到打击摧残,只做简单题。该法对心理脆弱、亟需成就感同学最佳。

随机数法 随机生成一个题目数,然后解决这个题目,该法对探险爱好者最佳,毕竟,每一次做题,都是一次惊喜。

与上面阐述的不同,我所推荐的还是,系列学习法:在 Leetcode 上面,算法题目的类型划分的较为清楚,例如数组类、链表类、二叉树类等。刷题时,可以每次挑选一个序列的题目来做。

红框中可以看到各种题目类型

例如,我这两天先集中精力解决「链表」类题型,将与链表算法有关的变体,系统的做一遍,不断的强化脑海中与之有关的记忆细胞。

举个形象的例子,如果我去果园摘菜,东摘一颗葡萄,西摘一颗草莓,稀里糊涂的来回转悠。最终我会疲于奔走,篮子里也会杂乱不堪,还得腾出精力来进行整理。

但如果我先把成熟的葡萄都摘取了,然后再来处理草莓,就会大大节省我的整理时间和奔波消耗。

学习优秀的解题方案

刷题的时候,每遇到一道题,我都会全神贯注的思考解题思路,如果能够马上想出来,就动手编程;如果十分钟之内,都没有清晰可行的思路,我会果断的选择放弃。

我平时的工作、任务比较繁忙,不容许我花太多的时间去推敲解题策略。所以,这种方式是无奈的选择,经过实践,我发现也很高效。

需要注意的是,这里的放弃,不是真正的放弃,而是说我会去看别人的解决方案。当然,即使我做出了题目,也会去看看别人的解决方案。Leetcode 的设计机制,很容易能够让我们做到这一点。

每道题目都有一个 Discuss 讨论模块,我们点击进去,会发现,这里贴满了前人发表的各种解决方案,排名靠前的,一般是最为优秀的,或是时间和空间复杂度消耗很低,或是代码实现优美,思路清晰易懂。

一道题目的 Discuss 讨论模板

总之,阅读前几名的方案,我经常觉得是一种享受,时不时会发出赞叹「原来这题还可以这么写」。偶尔会乐在其中,也算枯燥刷题生活的苦中作乐。

及时整理题目的套路

人的记忆,是不断更新、不断遗忘的。做过的一些题目,过了一段时间,可能又还给了 Leetcode。

我很清楚自己生而为人的这种劣势,尽量用科学的方法去加以弥补。俗话说,好记性不如烂笔头,我会对刷过的题目,分门别类的进行整理总结。这个过程,是对出题人套路的深度揣摩,有利于让自己学会,透过现象看本质。

例如,以下就是我刷题过程中的整理的常见套路,虽然不够全,但对我来说够用了,你也可以整理自己的。

另外,Leetcode 也有中文网站,网站地址[2]

至此,整理我刷题过程的所知所感,希望对大家有益,嘿嘿。如果你对我整理的题型比较感兴趣, pdf 文档。

References

[1] 网站地址: https://leetcode.com
[2] 网站地址: https://leetcode-cn.com




本文转载自公众号:公子龙,作者:公子龙

推荐阅读

AINLP年度阅读收藏清单

2020 互联网应届硕士的薪资情况

EE转CS,拿了多个行业offer,最终选择NLP算法岗的同学的秋招总结

2021 校招算法岗, 劝退还是继续

征稿启示| 让更多的NLPer看到你的文章

AINLP-DBC GPU 云服务器租用平台建立,价格足够便宜

AINLP-DBC GPU 使用体验指南

我们建了一个免费的知识星球:AINLP芝麻街,欢迎来玩,期待一个高质量的NLP问答社区

关于AINLP


AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。


登录查看更多
4

相关内容

LeetCode is a social platform for preparing IT technical interviews.
【2020新书】社交媒体挖掘,212pdf,Mining Social Media
专知会员服务
60+阅读 · 2020年7月30日
【Java实现遗传算法】162页pdf,Genetic Algorithms in Java Basics
专知会员服务
43+阅读 · 2020年7月19日
【硬核书】群论,Group Theory,135页pdf
专知会员服务
125+阅读 · 2020年6月25日
【干货书】数值计算C编程,319页pdf,Numerical C
专知会员服务
67+阅读 · 2020年4月7日
机器学习速查手册,135页pdf
专知会员服务
340+阅读 · 2020年3月15日
算法与数据结构Python,369页pdf
专知会员服务
162+阅读 · 2020年3月4日
【新书】Python数据科学食谱(Python Data Science Cookbook)
专知会员服务
114+阅读 · 2020年1月1日
百万年薪AI工程师思维导图及书单
七月在线实验室
37+阅读 · 2018年5月25日
如何成为一名人工智能算法高手?
算法与数学之美
4+阅读 · 2017年8月3日
如何用Python从海量文本抽取主题?
AI研习社
7+阅读 · 2017年7月6日
Arxiv
7+阅读 · 2019年5月31日
Arxiv
10+阅读 · 2018年2月9日
VIP会员
相关VIP内容
【2020新书】社交媒体挖掘,212pdf,Mining Social Media
专知会员服务
60+阅读 · 2020年7月30日
【Java实现遗传算法】162页pdf,Genetic Algorithms in Java Basics
专知会员服务
43+阅读 · 2020年7月19日
【硬核书】群论,Group Theory,135页pdf
专知会员服务
125+阅读 · 2020年6月25日
【干货书】数值计算C编程,319页pdf,Numerical C
专知会员服务
67+阅读 · 2020年4月7日
机器学习速查手册,135页pdf
专知会员服务
340+阅读 · 2020年3月15日
算法与数据结构Python,369页pdf
专知会员服务
162+阅读 · 2020年3月4日
【新书】Python数据科学食谱(Python Data Science Cookbook)
专知会员服务
114+阅读 · 2020年1月1日
相关资讯
Top
微信扫码咨询专知VIP会员