添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

我的读者福利🎁🎁:力扣中国官方和我合作,给我(负雪明烛)的读者一项专属福利: 充值力扣季卡会员,多送 2 周;充值年卡会员,多送 2 月!
充值会员后可以看到企业题库、面试题热度,享用快速判题通道!
想要充值会员的同学,可以使用我的邀请链接: https://leetcode.cn/premium/?promoChannel=fuxuemingzhu 。因为是新活动所以优惠力度比较大,大家可以快点上车,链接长期有效。

大家好,我是 负雪明烛 。今天跟大家聊一聊「LeetCode应该怎么刷?」这个话题。

我是大二的时候开始接触 LeetCode 的,那时候 LeetCode 只有 400 题,我本来打算每天做 1 个题,但是由于当时觉得 题目太难 没坚持下去。在大四考研后和研一研二的两年左右的时间,我刷了 800 多道题(现在已经900多),并且大多数题目做了 2~3 遍。那么我是怎么做到的呢?
在这里插入图片描述

一、入门篇

1. 刷题姿势

刚开刷 LeetCode 时遇到二叉树翻转,想了一天也没明白,当时无比痛苦。因为我的方法不对,我总想着在脑子里面想明白再写,在白纸上不停地模拟二叉树树翻转的每一步,还想着用本地 IDE 写个二叉树结构进行Debug,现在看来都是走了弯路。

大部分新手应该是只学过课本上的一些数据结构和算法的知识,还没有实际刷题经验,因此非常痛苦。

对于新人而言,不应该自己死抠一个题目,如果想了一会没有任何思路,就应该果断看别人怎么写的。在理解了别人的做法之后,再凭理解和记忆在 LeetCode 的代码框里敲一遍。

学习 = 学 + 习 。知识是学出来的,不是在自己脑子里蹦出来的;学过之后,还要自己动手练习。新手要勇敢地、经常地学习别人的解法和答案,然后凭理解敲代码练习。只要度过刷题初期的痛苦,后面就会越刷越快。

2. 基础知识

需要掌握常用的数据结构和算法的思想和适用场景。

学习基础知识,我推荐 《算法(第4版)》 。这个书不用全部细看,可以只看重点,比如前面的 Java 知识不用看,数学推导部分可以不用看。

再推荐一本侯捷的 《STL源码剖析》 ,这本书对理解C++ STL有重大帮助,看了之后绝对会对数据结构和算法有更深的理解,我看完这本书之后感觉相见恨晚啊。

3. 刷题顺序

合理的刷题顺序能降低难度,帮助我们在有限的时间里获得最快的成长。

LeetCode 现在将近 2000 道题,基本没有人能够全部刷完,而且对于参加面试者来说也没有必要刷特别多的题。许多人在面试前刷了 200 道题,基本够了;准备更充分的人,大概会刷 400 道题;能刷 600 道题目以上的,基本上国内公司的 Offer 都能收获到一大堆。

我推荐的刷题顺序的规则是:

  • 按分类刷;每个分类从 Easy 到 Medium 顺序刷;
  • 优先刷 树、链表、二分查找、DFS、BFS 等面试常考类型;
  • 优先刷题号靠前的题目;
  • 优先刷点赞较多的题目;

如果基本上能做到 Easy 题 100% 能做对,Medium 题经过思考或与面试官交流后能做对,基本就能拿到 Offer。在实际面试过程中,很少出 Hard 题,视能力刷。

4. 跟别人学习

向别人学习是非常必要的。

1)看别人的题解

主要看别人在解决这个题目的思路是什么。无论这个题你会不会,都要看下别人的解法,或许有新收获。

推荐的博客作者有:

  • 负雪明烛 :5 年在 CSDN 上更新了 800多道题解,收获 160万 阅读。在中文力扣日更题解。
  • 李威威 :中文力扣的大 V,对力扣题目掌握很全面,写得题解非常详细,对题目举一反三。
  • 花花酱 :基本每个题都有博客和视频,强烈推荐看他的视频。
  • Grandyang :在博客园更新了几乎所有力扣题目,收获了 1200万 阅读。

最近我在刷中文版的力扣,题解区的答案质量非常高。比较推荐的博主有: 力扣官方题解,负雪明烛,李威威,zerotrac,Krahets

我恬不知耻地推荐一下自己(负雪明烛)的题解,我最近已经连续在中文力扣日更「每日一题」题解 20 天。最近利用动图帮助大家理清做题思路,点赞和阅读数都比较高。

除了题解区以外,如果想看博客上面的题解,可以用搜索引擎搜题目和博主名。想看负雪明烛的「 two sum 」题解,那么搜索方式就是在关键词之后加上「 fuxuemingzhu 」:

2)看别人的总结

这部分包括算法讲解、套路整理、刷题模板等。

「算法题 = 思路 + 模板」 ,思路需要通过看别人的解答以及讲解获得,模板就是做题的套路,既可以自己总结,也可以看别人总结好的。

比如负雪明烛的 【LeetCode】代码模板,刷题必会

也比如说 AlgoWiki

当然推荐每个人在做题的过程中都整理一份自己的总结,用自己的方式总结好知识点和模板。

5. 做好笔记

写作过程能更好地帮助我们理清思路,也能帮助我们再做此题时快速想起以前的做法,还能见证我们自己的成长。

在五六年前我刚开始刷题时,就把每个做过的题目记录在CSDN上,现在 我的博客 浏览量已经将近 161万 了。

任何题,无论难度,我都记录题目、想法、代码。虽然经常写博客的时间比写题的时间还多,但是把自己的想法讲解一遍才是真的懂了,更方便了自己之后看、以及大家交流。经常看到自己几年前写的愚蠢代码,然后感叹自己确实有进步了。

在 B站 有个小姐姐讲了小白如何上手LeetCode,也演示了如何用 iPad 做笔记,值得一看。

程序媛分享 | LeetCode小白如何上手刷题?iPad学习方法 | 刷题清单 | 新手指南 | 刷题找工作 | IT类

6. 交流和监督

刷题最大的障碍是自己。特别是新手,很可能由于刚接触 LeetCode 感觉太难就没有毅力坚持下去,导致半途而废。而且,刷题更重要的是 坚持 ,做题的感觉都需要手感进行保持的。

所以,如果能有个组织交流和监督就好了。

我组织了「 每日一题交流群 」的活动,并且做了个网站 https://ojeveryday.com 来监督大家打卡。在网站上提交力扣个人主页就能进群,群里的规则是每天同步力扣的每日一题,然后大家交流做法。群里还会组织模拟面试、周末直播讲题等活动。由于进群前需要提交自己的 LeetCode 个人主页,并且群主管理严格,所以群里没有任何广告。刷题群已经持续将近一年,欢迎大家加入。
在这里插入图片描述

事实证明这种大家一起做同一道题目,并且一起交流讨论的氛围非常好。

二、提高篇

如果你已经过了小白的阶段,那么应该做些提高项目。

1. 周赛

所谓周赛,就是每周日上午,LeetCode 组织的一场比赛,总共 4 道题,一般是 Easy 一道,Medium 两道,Hard 一道。中英文网站同时开始,题目相同。每隔一个周六晚上有双周赛,题目和周赛类似。往届竞赛也可以点击参加做练习模拟。

做周赛的目的是检验我们的学习成果,毕竟这些题目都是新的,就像考试一样。

不要担心自己做不出来,只要尽力而为就好了,我一般的目标是解决前三道,第 4 道 Hard 做不出来也没有心理负担。

参加完比赛之后,看下别人的解答,因为这几个题目都是自己苦思冥想过的,因此学习和进步地都挺快。

我最好的一次周赛成绩是全球 28 名,当看到自己的 id 显示在了全球排名的第一页,我非常兴奋,开心了一整天。

2. 模拟面试

对于大多数人来说,刷题的目的是找工作,那最终就要参加面试。一个人做题的过程是缺乏交流的,实际面试中会有交流互动。因此,推荐在面试前参加一下模拟面试。

另外,哪怕不参加模拟面试,给别人讲一下做题的思路和代码的实现过程也是大有裨益的。

需要参加模拟面试的也可以进「 每日一题交流群 」,我邀请了力扣全站排名第一的 storm 来做模拟面试官。

上文总结了我想到的「LeetCode应该怎么刷?」的方法,最重要的还是 坚持 二字。做时间的朋友,努力付出就一定有收获。如果觉得刷题困难,就多多学习,多多交流,不要半途而废。

最后,希望大家都能够通过刷 LeetCode 获得成长,拿到自己满意的 Offer。

期待你的 点赞、关注、分享

欢迎加入刷题群

目前已经近 2000 人加入了每日一题打卡群。加入方式是通过每日一题打卡网站,该网站每天都会同步力扣每日一题,这是个互相帮助、互相监督的算法题打卡网站,其地址是 https://www.ojeveryday.com/
在这里插入图片描述

想加入千人刷题群的朋友,可以打开上面的链接地址,然后在左侧点击「加入组织」,提交力扣个人主页,即可进入刷题群。期待你早日加入。

我是本文的作者是 负雪明烛 ,毕业于北京邮电大学,目前就职于阿里巴巴。坚持刷算法题 5 年,共计刷了 800 多道算法题。做过的每个算法题都在 CSDN 上写题解博客,获得好评无数,CSDN 的累计阅读量已经 161万 次!博客地址是: https://blog.csdn.net/fuxuemingzhu

负雪明烛 」公众号是负雪明烛维护的一个算法题解公众号,致力于帮助大家刷题、找工作。欢迎关注。

2021 年 2 月 13 日 负雪明烛 更新于 北京。

移动零给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。难点就是不复制原数组要原地修改,解法为设置一个res,记录前面的0的个数,每次插入时只要插入到nums[i - res]中即可移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 该仓库是本人 leetcode 学习的一些记录,希望自己通过 leetcode 的学习,加强 算法 相关的功底。 2.结构说明 该工程里面的 目我按照 目的类型进行分类,分为array(数组),linkedList(链表),queue(队列) 等。类的文件名由类别+数字进行组成。这里以Stack20.java文件为例,前缀Stack代表的是所属的问 类别, 20代表的是对应的 leetcode 上的 目序号。解决的正是 leetcode 上的 序号为20的 目 解 思路 本人的解 思路会以md文档的形式,记录在doc文件夹下,文件以类型.md结束。比如,栈相关解 思路 写在stack.md文件中,链表写在linkedlist.md文件中。 知乎:https://www.zhihu.com/question/36738189/answer/1870171349 如果想从事 算法 相关, LeetCode ,没有捷径。 我从**2020.04月开始 LeetCode ,花了些时间找了118道经典 目,前后反反复复 了三遍之后,**到2020下半年面对大厂的coding才开始不怯场。在此之前,几乎没 LeetCode ,数据结构掌握也不是很深刻。 LeetCode 是我面试准备中跨越的第一个难 ,**当我 这118道经典 目以后,LC在面试中逐渐从失分项   虽然 刷题 一直饱受诟病,不过不可否认 刷题 确实能锻炼我们的编程能力,相信每个认真 刷题 的人都会有体会。现在提供在线编程评测的平台有很多,比较有名的有 hihocoder,LintCode,以及这里我们关注的 LeetCode LeetCode 收录了许多互联网公司的 算法 目,被称为 刷题 神器,我虽然早有耳闻,不过却一直没有上面玩过。   据了解, LeetCode 是一个非常棒的 OJ(Online J... 点击关注上方“五分钟学 算法 ”,设为“置顶或星标”,第一时间送达干货。来源:五分钟学 算法 前言作为一名非科班出身的程序员,我是参加工作之后才开始接触 算法 ,学 算法 至今有将近五年的时间,期间输出... 力扣 ,作为一个国内外的程序员都用作准备面试的 刷题 网站,对想要阅读这篇指南的你 应该 都不陌生。当你想要借助 力扣 刷题 ,提升代码能力、在面试中脱颖而出,却不知从何入手,这篇文章可以作为你的入门指南。 我们在进leeteCode进行 刷题 时不要盲目的去 ,而是有技巧有意识的去判断自己所做的 目属于哪一种类别,同时牢记不同类别的出 方式 如: 目的前提是数组为有序数组,同时 目还强调数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件,当大家看到 目描述满足如上条件的时候,可要想一想是不是可以用二分法了。 诸如此类的操做,接下来我开始带着大家进入 算法 的乐园 首先看看我们的 目大概分为哪几类 1.二分查找 做 思路: 利用逼近的方法逐渐靠近我们需 据了解, LeetCode 是一个非常棒的 OJ(Online Judge)平台,收集了许多公司的面试 目。相对其他 OJ 平台而言,有着下面的几个优点: 目全部来自业内大公司的真. Sequence Containers:维持顺序的容器。Container Adaptors:基于其它容器实现的数据结构。Associative Containers:实现了排好序的数据结构。Unordered Associative Containers,数据结构,C++ STL,数组,栈和队列,优先队列,双端队列,哈希表,多重集合和映射,前缀和与积分图。在 刷题 时,我们几乎一定会用到各种数据结构来辅助我们解决问 ,因此我们必须熟悉各种 数据结构的特点。C++ STL 提供的数据结构包括 https://zhuanlan.zhihu.com/p/501483324很多初学 算法 的同学,对着 LeetCode 从头开 ,结果磕磕碰碰没几个AC。挫败感上来就 不动了,其实掌握科学 刷题 顺序能让你事半功倍!今天就来 总结 下正确的 刷题 顺序,大家跟着 就行!在 刷题 之前,如果时间充足,一定要先了解一道 算法 考察的知识点,同一个知识点可以触类旁通,强化联系。下面把 Leetcode 上的 目按结构化标签分类,供你参考。一定要按照按照 目类别结构化地 刷题 !!!这样 刷题 的速度不仅更快,而且可以在 一类 之后进行 总结 。对 所以我整理了 leetcode 刷题 攻略一个超级详细的 刷题 顺序,每道 目都是我精心筛选,都是经典 目高频面试 ,大家只要按照这个顺序 就可以了,你没看错,README已经把 目顺序都排好了,文章顺序就是 刷题 顺序!挨个 就可以,不用自己再去 海里选 了!其实我之前在知乎上回答过这个问 ,回答内容大概是按照如下类型来 数组->链表->哈希表->字符串->栈与队列->树->回溯->贪心->动态规划->图论->高级数据结构,再从简单 起,做了几个类型 目之后,再慢慢做中等 目、困难 目。... LeetCode 刷题 攻略:配思维导图,100+经典 算法 刷题 顺序、经典 算法 模板、共40w字的详细图解,以及难点视频 解。按照 刷题 攻略上的顺序来 刷题 ,让你在 算法 学习上不再迷茫! 算法 面试思维导图 B站 算法 视频讲解 LeetCode 刷题 攻略 算法 模板 LeetCode