刷leetcode的一点心得,给想开始刷算法的朋友一些建议

272 阅读3分钟

写这篇文章之前,先说一句老生常谈的话:学而时习之。学习是需要时常去练习、复习的,刷题也不例外。

我买过不少书,像《算法》(第四版)、《剑指offer》、《算法竞赛入门》等等,翻了翻,看了看,结果都不尽人意,不成体系。我仔细反思我这一时期走过的坑,发现有两点问题。其中之一是没人指明道路,要怎么去学。另外一个就是无人指点迷津,只能一个人瞎琢磨,效率差不说还不容易坚持。以下是我的一家之言,经验之谈,望后来者能少走一些弯路。

如果你要学习算法,首先你要明确目标。没有目标没有目的去学习,你只是个无头苍蝇瞎忙活。亦或者你在焦虑,只是想找点事情来干。所以我建议选以下的两个目标:

  • 体系化地学习数据结构,这个阶段你不需要刷题,你需要掌握数组、链表、二叉数、哈希表、图等的结构和实现
  • 为了面试也好,提升也罢,直接刷leetcode,每天刷一题

上面两个目标,选其中之一即可,但我都建议你找一个视频来学,特别是刷leetcode的题,你不跟着视频学习,就算你直接看题解,那么你也要花很多精力去理解。很多解法都是通过简单的解题思路,一步一步优化出来的,你直接研究最佳解法,除非你是天才,不然你需要耗费大量的时间和精力。

在职的程序员,时间先不说,一天的工作下来,还能剩下多少精力都要打个问号。

本来想说很多的,但是一到写文章的时候就无从下手,千言万语只剩下“跟着看视频就好了”。以下是建议:

  1. 找适合自己的学习视频,这种视频有很多,但是讲的好的又难找到,挑选好的老师就是这样一个过程。假如你找了很多视频,你看不下去,别放弃,这不是你的问题,继续找(当然如果你的基础差了点,那么你的重心就不应该是刷题了)。这里我推荐慕课网的liuyubobobo老师,视频里面的动画演示一目了然,说实话,他的leetcode课程对我帮助很大。
  2. 一开始刷题的时候不要想着把每一行的代码搞懂,知道个大概就好了,这一点很重要。通过视频里面的动画演示,你知道代码大概是怎么执行的就好(有一些边界问题跳过都行,比如:i-k、i-k+1),你刷多了,慢慢地、自然而然地就会了。开头的困难都是因为不熟悉,没必要刚开始就硬刚。
  3. 刷题不需要多,每天一题就好了,基本上其实都是套路题,你不刷根本就不知道怎么解。

说点题外话,虽然这边文章写的不咋地,但是也发出来了。出来工作已经6、7年了,但是工资水平还是处于中下水平,望着同龄人或者比自己还小的一骑绝尘,说不急也是骗人的。 最近也看了不少书,书中的道理也很明白了,但终归来说是知行合一,要去行动(所以我大胆发了)。23年后半年也去考了一下在职研究生,虽说在职研究生的学历在私企里面不太吃香,但是重学数学、英语和专业课,你能感受到这些知识的重量。今年大概率也会去考一次,有机会说一下这段经历。技术性的文章有很多,但是写人生经验的很少,希望我的某段历程能给人点感悟。