算法是程序的灵魂。 随着中国程序员越来越多,如今,想要通过大厂的面试或者拿到一份高薪 offer,不仅要有过硬的岗位相关的专业知识和实践经历,更重要的是要有扎实的算法基本功。每一轮面试都可能需要完成 1 ~ 3 道算法题,无数的同学因为算法这道门槛而被大厂拒之门外。现在能拿到大厂高薪 offer 的英雄豪杰,哪个不是过五关斩六将,斩题如斩狗?但是问题来了,对于很多同学来说,学习算法是一件枯燥、且乏味、且痛苦的事情。学理论难、刷题难、坚持更难。

站在巨人的肩膀,这才是刷算法的正确姿势_java

幸运的是,一些帮助大家学习算法的平台出现了。其中非常优秀的是LeetCode(地址:https://leetcode-cn.com)。LeetCode 题目难度适中,涉及的算法比较全面,非常适合作为求职者的算法练习平台,很多公司都会直接选用 LeetCode 上的原题来考察求职者的算法能力。

站在巨人的肩膀,这才是刷算法的正确姿势_java_02

 

鱼皮曾经做过一个调研,100 位拿到大厂 offer 的同学中,有 20% 是专业的算法竞赛队员,有 30% 的同学在 LeetCode 上完成了 100 道算法题目,40% 的同学完成了 200 道以上的算法题目!其他同学也或多或少在不同的平台学习和练习过算法。作为一名在 LeetCode 上刷了超过 600 题的程序员,鱼皮认为,LeetCode 给自己带来的帮助是巨大的,想要找到好的工作,LeetCode 上的题目是必须要刷的!

站在巨人的肩膀,这才是刷算法的正确姿势_java_03

那应该怎么刷算法题,才不会被劝退呢?网上有很多大牛已经整理了学习技巧,鱼皮也会分享自己的刷题技巧给大家。让我们站在巨人的肩膀上(除了 me),一起掌握刷算法的正确姿势吧~

Fucking Algorithm

在 GitHub 上坐拥 60000 + star 的算法笔记,可以手把手带你解决 150 道 LeetCode 算法问题,涵盖了所有常见题型和技巧,比如动态规划、数据结构、二分、高频面试题等,并且整理了刷不同类型题目的通用框架。更妙的是,作者会教你如何在刷算法题时举一反三,养成框架思维。大家可以先阅读这篇算法小抄,再去刷 LeetCode;也可以刷完 LeetCode 题目后再反过来看这篇教程,相信会带你更多的感悟。文章生动有趣,妙笔生花,谁看了不叫一声 XX!

站在巨人的肩膀,这才是刷算法的正确姿势_java_04

 

该笔记仍在不断更新,有兴趣的同学还可以给这篇算法小抄贡献题目。地址:https://labuladong.gitbook.io/algo/

LeetCode Animation

如果说上面的算法笔记是帮助大家学习算法的思维框架,掌握算法题目的解题套路。那么 LeetCode Animation 的作用更加纯粹,就是通过图形和动画的形式帮助大家完成每一道 LeetCode 的题目,加深大家对解题思路的印象,也能够更加清晰地将解题过程表述给面试官。比如下面这道题目,删除链表的倒数第 N 个节点:站在巨人的肩膀,这才是刷算法的正确姿势_java_05动画帧数太多,放不了啦动画真的是不能再细致了,生怕大家学不会啊!目前作者已经整理了比较基础且常见的近百道题目,建议大家完成 LeetCode 题目后,一定再来看看小动画,说不定对题目有了新的见解。地址:https://github.com/MisterBooo/LeetCodeAnimation

鱼皮自己的算法小技巧

以上是两位大佬总结的算法秘籍。鱼皮也简单地分享下自己刷 LeetCode 的小技巧。1. 刷题顺序记住三个要点:从探索刷起,从简单的刷起,从通过率高的刷起。探索是 LeetCode 精心整理的算法入门题目,相对简单实用,还附有讲解,是入门的不二之选。

站在巨人的肩膀,这才是刷算法的正确姿势_java_06

地址:https://leetcode-cn.com/leetbook/进入题库,利用 LeetCode 自带的题目筛选和排序功能,能够帮助我们由简单到困难,渐进式刷题。一般来说,先刷通过率较高的题目,相对比较容易。

站在巨人的肩膀,这才是刷算法的正确姿势_java_07

2. 巧用题解LeetCode 的每道题目都有很多题解,讲述了如何解决这道题。那怎么才算巧用题解?不仅要多读别人的题解,学习他人解题的不同思路;还要多写题解,把自己的思想整理成文,能够加深自己对题目的影响,对之后的面试帮助很大。

站在巨人的肩膀,这才是刷算法的正确姿势_java_08

3. 精益求精当你每次成功解题时,系统会生成一份解题报告,告诉你的程序在时间和空间上击败了多少用户。尝试不断优化你的代码,直到击败 100% 的用户吧(我们在工作中也是如此),相信你能够逐渐掌握编写高性能程序的技巧~

站在巨人的肩膀,这才是刷算法的正确姿势_java_09

4. 参与竞赛LeetCode 每周都会开展一次算法竞赛,看看谁能在有限时间内最快最多地解题,紧张刺激,能够激发出我们的思维,让我们适应面试的节奏。多多参加还有机会获得奖励!

站在巨人的肩膀,这才是刷算法的正确姿势_java_10


以上就是刷算法的正确姿势啦,希望大家无论是为了找工作,还是强化自身的思维,都要认真耐心地对待每一道算法题目,切忌焦躁!https://mp.weixin.qq.com/s/E4xMnRDHHox9bM8tZaY_yg