Leetcode

# Leetcode 刷题指南

冲着算法编程面试去的,不是学校计算机系里学的那种

# 1. 数据结构与算法课程(基础)

如果没学过或者学了忘记的,可以参考以下课程(基本我都看过),都是高手,强烈推荐:

以上课程,b 站、油管、网盘全部都有 💯 🆓 ,自行寻找。

MIT,Stanford,CMU,Coursera,Edx,Udacity 上都有大学的数据结构与算法的公开课,虽然很好,但学习时间较长,不走学术和研究路线的话不建议采用。

可以结合刷题来巩固知识点。如果没有编程基础,推荐使用 Python 来学习和刷题。

# 2. 刷题策略

  • ==策略 A:突击==

    • 前两百多道都是经典题,先刷热题 HOT 100 ~ 200,再刷精选 TOP 面试题,之后刷其他的题。

      leetcode algo leetcode top
    • easy/hard 一般不会考,碰到 hard 的就缴枪自认倒霉吧

    • 一些算法是冷门,同样如果万一碰到了就自认倒霉吧

  • ==策略 B:循序渐进==

    1. 基础:Leetcode -> Explore -> Learn 针对各个数据结构和算法的分类学习 + 练习: leetcode learn

      Leetcode 中文站的资料就更多:https://leetcode-cn.com/leetbook/

      <img src="leetcode.assets/leetcode-cn.png" alt="leetcode-cn" style="zoom:67%;" />
      

      算法基础好的或者学校刚毕业的可以跳过这部分,直接刷题。

    2. 针对每个 topic 强化刷题,包括套路和特定类型的问题:Leetcode -> Problems -> Tags 选择 topics,参考下面的 [5. 刷题线路(精华题)](#5. 刷题线路(精华题))

    3. 面试前针对某个具体公司刷题:Leetcode -> Problems -> Tags 选择公司

# 3. 刷题方法

极客算法训练营推荐的==五遍刷题法/五毒神掌==:

1.  刷题第一遍
    -   5~10 分钟读题加思考
    -   然后直接看解法。注意!多解法,比较解法优劣
    -   背诵、默写好的解法
2.  刷题第二遍
    -   马上自己写 -> 提交到 Leetcode 反复 debug 至通过
    -   多种解法比较、体会 -> 优化,Leetcode 有统计执行时间和内存消耗
3.  刷题第三遍
    -   过了一天后,再重复做题
    -   不同解法的熟练程度 -> 专项练习
4.  刷题第四遍
    -   过了一周再反复回来练习,同时对于不熟练的题目再进行专项练习
5.  刷题第五遍
    -   面试前一周恢复性训练
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 4. 刷题线路(新手)

还不知道如何刷题的话,别人已经整理好具体的新手计划,跟着上手:

  • {30 DAYS} (opens new window)

    Work towards becoming a better developer by going through the awesome resources that we've compiled for you. This covers all the important data structures and algorithms that you need, to improve your problem solving skills. Take advantage of the amazing free content out there for free, set your right mindset and get going!
    
    1
  • 100 天摆脱算法小白(作者:小浩) (opens new window)

    我曾发起一个项目 hello-algorithm,从上线到获得 8k star 只用了不到半个月的时间,且登上过 github trending 日榜榜首的位置。但是该项目在我看来却有一定局限性,由于资源性质过重,并不能让大家真正参与进来。同时,也没有系统的给出一套完整的算法训练步骤。在这样的背景下,我重新创建了现在这个项目:Algorithm-100-Days,期望可以提供一套完整的算法训练,并对每一节学习内容都提供了视频。
    
    1
  • 算法模板(Go/Java/Python/Javascript) (opens new window)

    算法模板,最科学的刷题方式,最快速的刷题路径,一个月从入门到 offer,你值得拥有此项目是自己找工作时,从 0 开始刷 LeetCode 的心得记录,通过各种刷题文章、专栏、视频等总结了一套自己的刷题模板。这个模板主要是介绍了一些通用的刷题模板,以及一些常见问题,如到底要刷多少题,按什么顺序来刷题,如何提高刷题效率等。
    
    1

# 5. 刷题线路(精华题)

  • 小浩算法 (opens new window)

    小浩算法是我在疫情期间完成的一部图解算法题典!目前共完成 105 道 高频面试算法题目,全部采用漫画图解的方式。该教程目前共有 11w 人阅读。
    
    1
  • Leetcode Animation All in On

    程序员小吴,一个终生学习编程的程序员。
    
    我会尽力将 LeetCode 上所有的题目都用动画的形式演示出来,计划用 3 到 4 年时间去完成它,期待与你见证这一天!
    
    文章最新首发于微信公众号 五分钟学算法,您可以关注获取最新的文章。
    
    1
    2
    3
    4
    5
  • 代码随想录/程序员 Carl:LeetCode 刷题攻略 (opens new window)

    家好,我是程序员 Carl,哈工大师兄,ACM 校赛、黑龙江省赛、东北四省赛金牌、亚洲区域赛铜牌获得者,先后在腾讯和百度从事后端技术研发,CSDN 博客专家。对算法和 C++后端技术有一定的见解,利用工作之余重新刷 leetcode。
    
    200 道经典题目刷题顺序,共 60w 字的详细图解,视频难点剖析,50 余张思维导图,从此算法学习不再迷茫!
    
    1
    2
    3

# 6. 套路 & 模版

# 7. 题解

# 7.1. 中文讲解

油管和 B 站上都有很多人在讲解,可自行搜索,同一题有时需要交叉听听不同人的讲解:

  • 💁🏻‍♂️ 花花酱

    花花酱讲解 LeetCode 题目已经很多年了,一直更新,属于老字号。他针对不同题型开辟了各种算法专题,涵盖了 LeetCode 上很广泛的各类题型,比较适合刚刚入门的同学进行系统性分块学习。而且花花酱更新频率比较高,平时的 contest 也会参加,会分享一些解题思路。
    
    1

# 7.2. 英文讲解(课程)

很好但需要花钱购买,盗版的自己找 🙈

# 7.3. 各路大神作业

# 8. 刷题利器

# 8.1. VS Code 插件

下载 (opens new window)

VS Code 里安装插件后:

  1. 唤出 Leetcode

    leetcode
  2. 先 Switch Endpoint 选“中国” or “US”,两边 leetcode 不同 leetcode endpoint

  1. Sign in:⚠️ 注意 leetcode US 已经不能支持账号 Sign in,必须通过 cookie(从 Chrome 浏览器中 login,然后把完整的 cookie 拷贝过来) leetcode cookie

    <img src="leetcode.assets/leetcode-cookie.png" alt="leetcode cookie" style="zoom:80%;" />
    
  2. 接下来点击最右边导航条上 leetcode 标签 leetcode demo

  3. 开刷 leetcode submit

# 8.2. IntelliJ 插件

下载 (opens new window)

IntelliJ 里安装插件后:

  1. 配置 config

  2. 使用 use debug

# 8.3. Chrome 插件

下载 (opens new window)

# 9. 小结

The Best Code Interview Prep Platforms in 2020 (opens new window)

LeetCode 应该是最好的,不够的话还有 InterviewBit (opens new window)GG (opens new window)Google’s Coding Competitions (opens new window)TopCoder (opens new window)HackerRank (opens new window)《挑战程序设计竞赛》 (opens new window)《算法竞赛进阶指南》 (opens new window)等等。

如果你不想做 CRUD 的程序员,但每天写的东西就是在屎山上堆屎,刷题就是另一个路径,是一种刻意训练,提高编程功底,开拓思维。听说,很多高手也在“悄悄”的刷。

小结:

  • 如果有编程经验的,用什么语言刷题一点都不重要,因为语言层面只用到最最基本的东西(int,string,array,if/else,for/while 等)
  • 刷题之前先把数据结构和基本算法过一遍,把基础打牢
  • 刷题没有捷径,只有策略和积累,无论按照怎样的顺序、策略来刷题,想要灭考官,都需要经历 题海战术
  • 只刷题还不够,一定要回顾总结,掌握套路 & 模板

# 数据结构与算法

# 解题套路 & 模版

keyword

label

underline