算法刷题路线总结与相关资料分享

  • 前言
  • 一、算法刷题路线总结
  • 二、算法题刷题步骤
  • 三、基础数据结构知识汇总
    • 1、时间复杂度
    • 2、空间复杂度
    • 3、线性表
    • 4、栈与队列
    • 5、树
  • 四、基础算法知识汇总
    • 1、递归
    • 2、多指针算法
    • 3、动态规划
    • 4、回溯
    • 5、滑动窗口
    • 6、分治思想
  • 五、算法学习相关资料推荐
    • 1.数据结构与算法基础
    • 2.专项刷题路线资料
    • 3.算法课程视频资料
  • 后记

前言

本文为算法刷题路线总结与相关资料分享,所有内容为参考网上多方资源进行总结而得,本人自己也在持续学习中~ ,Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~

一、算法刷题路线总结

经过对网上多方经验的参考,总结出自己的算法刷题路线如下:
(1)首先,复习数据结构与算法基础知识,形成完整的算法知识体系,最基本的数据结构,例如链表,队列,栈,二叉树等至少要先熟练掌握;
(2)接着刷LeetCode前100题,前100题是最为常见的题目,据说刷算法题0-100题是第一道坎,100-300题是第二道坎,那么度过第一道坎就可以让我们对算法题目有基本的认识,慢慢找到做题的感觉和思路,并拥有一定的做题能力,可以按照链表/二叉树/递归等这些标签来刷;
(3)然后就是算法能力提升阶段,要根据专题进行专项训练,掌握不同的解决问题的方法,并能够针对具体类别的问题产生相应的解题思路,可以参考下边专项刷题路线资料分享;
(4)最后就是进一步提高阶段,可以采用乱序刷题的方式,可以刷各种面经和高频题,推荐书籍《剑指offer》,这一阶段重在锻炼在面对不同问题的时候,能够选择最为合适的数据结构和算法,进一步加深对于算法的理解,同时拓展常用的算法思想,建立自己的理解。同时学习各种各样的解题技巧和思路,也要学习相关的数学知识。

二、算法题刷题步骤

互联网算法笔试题型介绍:

  • (1)基本数据结构的考察:这类题我是比较简单的,主要考场基本数据结构的操作,例如二叉树的层序遍历,链表的逆序等,当然,它不会直接告诉你,让你来逆序或者遍历。
  • (2)某种算法思想的掌握:这类题掌握了某种算法思想,就会比较容易,如果不懂,那就凉凉了。例如动态规划、回溯、枚举、深度/广度、贪心、二分等。其中,动态规划考的挺多,然后就是回溯+深度/广度。
  • (3)边界条件的考察:这类型的题,估计一看就有思路,知道该怎么做,但是,它的边界条件特别多,需要分很多种情况来讨论,特别容易出错,有时候会让人陷进去,越做越复杂,这类题主要考查思维严谨程度。
  • (4)找规律、数学公式:这类型的题,主要是根据数据之间的一些关系,来找一些规律,进而推出他们的通用公式,就像我们高中时,找数列的同项一样。

算法题刷题分三大步骤:

  • (1)分析题目属于哪一类题目,大概用到什么数据结构算法,是数组、链表、图、树?还是用递归动态规划这些方法。常见的算法题目一般只涉及到这几个方面。
  • (2)验证分析阶段的思路。注意常见错误:变量名写错,边界条件考虑不周。如果调试阶段超过写代码的30%时间,说明思考过程,方案设计很有问题。先反思分析设计方案除了什么错误,思考的不够系统吗?不要一边写,一边改方案,这样效率太低,而且你会逐渐适应低效率的节奏,这个负面影响太大。
  • (3)作总结,总结很重要。如果没做出来,反思什么阶段犯了错误。如果做出来了,思考解题的关键点是什么,总结题目特点,一定要总结这个题目属于哪一种类型,这个题目在这个类型中特点是什么,和其他这个类型的其他题目区别在哪里。只有经过总结,做过的题目才会真正进入你解题思维的一部分,解题能力的一部分。

刷题时的注意点:
(1)一眼就懂思路的题有必要做吗?答案是,有必要做。千万不要眼高手低,看着简单,做起来不一定简单,AC 之后,还要去讨论区看看大佬们是怎么做的,因为有些人的代码,写的很简洁,看着就很舒服,可以多学一学。
(2)尽量最优解。对于很多题,如果不看时间复杂度和空间复杂度,单单只是 AC,那还是很容易的,但是一提交,可能只打败了百分之几的人,显然我们不能只满足于这种代码。当做一道题时,一开始可以先暴力做,但后面还得想想该如何优化,想不出也没事,可以讨论区找空间/时间复杂度更低的代码,或者直接搜索引擎搜索,一般都能搜到别人的代码。之后跟着别人的代码,自己再实现一波,尽可能把最优解的代码实现起来。当你入门之后,更多的是要总结方法,寻找高效率的代码。

三、基础数据结构知识汇总

在这里把基础数据结构知识形成列表列举出来,具体详细介绍期待后续分享~

1、时间复杂度

2、空间复杂度

一般最先接触的就是时间复杂度和空间复杂度的学习了,这两个概念以及如何计算,是必须学的,也是必须最先学的,主要有最大复杂度、平均复杂度等。

3、线性表

  • 列表(必学)
  • 链表(必学)
  • 跳跃表(知道原理,应用,最后自己实现一遍)
  • 并查集(建议结合刷题学习)

链表、列表必学,重点是链表。

4、栈与队列

  • 栈(必学)
  • 队列(必学)
  • 优先队列、堆(必学)
  • 多级反馈队列(原理与应用)

5、树

  • 二叉树:各种遍历(递归与非递归)(必学)
  • 哈夫曼树与编码(原理与应用)
  • AVL树(必学)
  • B 树与 B+ 树(原理与应用)
  • 前缀树(原理与应用)
  • 红黑树(原理与应用)
  • 线段树(原理与应用)

树相关是知识比较多,建议看书,可以看《算法第四版》,不过刷题前对于树的知识也不需要准备太多,先把最基本的二叉树学了就可以。

四、基础算法知识汇总

在这里把基础算法知识形成列表列举出来,具体详细介绍期待后续分享~

1、递归

  • 斐波那锲数列
  • 抢5游戏
  • 上台阶问题
  • 汉诺塔
  • 树和图的遍历

2、多指针算法

  • 链表反转
  • 双指针——快慢指针
  • 双指针——左右指针

3、动态规划

  • 最长递增子序列
  • 找零钱
  • 0-1背包问题

4、回溯

  • 全排列问题
  • N皇后问题

5、滑动窗口

  • 最小覆盖子串

6、分治思想

  • 归并排序
  • 快速排序

五、算法学习相关资料推荐

1.数据结构与算法基础

相关书籍有《算法导论》、《算法第四版》、《算法竞赛入门经典》等,如果觉得阅读书籍较为枯燥,效率较低,建议在复习数据结构与算法基础知识可以阅读LeetCode中的Leetbook,Leetbook 是 Leetcode官方提供的课程,它的好处是把算法归类为各个章节,而且大部分章节都是免费的。

2.专项刷题路线资料

推荐网站代码随想录: https://www.programmercarl.com/
《代码随想录》是Carl,一位哈工大师兄精心整理,帮助需要刷算法的同学少走弯路!
一个正确的刷题顺序对算法学习是非常重要的!该站大概按照如下专题来刷:数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心->动态规划->图论->高级数据结构,都是先从简单刷起,做了几个类型题目之后,再慢慢做中等题目、困难题目。

3.算法课程视频资料

对于算法相关的免费课程推荐B站最火的左程云的算法课程:算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程) ,左神专注于算法指导,因此他的课程质量还是比较高的。

另外,左程云编写的算法书籍《程序员代码面试指南》也堪称“神书”!书中对 IT 名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现,选取将近 300 道真实出现过的经典代码面试题,"刷”完这书,就是"题王”!

后记

后续会持续对自己算法刷题过程中的解题思路进行总结与分享~
Java全栈学习路线可参考:【Java全栈学习路线】最全的Java学习路线及知识清单,Java自学方向指引,内含最全Java全栈学习技术清单~

算法刷题路线总结与相关资料分享相关推荐

  1. 90页Numpy精华、算法刷题44天等内容整理

    你好,我是 zhenguo 今天总结最近推送过的项目.案例和资料相关PDF 这些资料中,有一部分是我耗费好几个月原创的,真的非常辛苦! 如<施工专题20篇.pdf>目前总阅读量已经达到 1 ...

  2. 搬砖试金石!github星标7W算法刷题宝典,还愁拿不下大厂offer?

    前言 这几年IT技术蓬勃发展,日新月异,对技术人才的需求日益增长,程序员招聘市场也如火如荼.在有限的三五轮面试中,国外流行让面试者编程解决某些数据结构和算法的题目,通过观察面试者编码的熟练程度.思考的 ...

  3. 字节跳动算法刷题宝典.pdf

    今天推荐一个关于「算法刷题宝典」的开源项目:力扣Cookbook. 力扣 Cookbook是@halfrost(中文名:霜神)去年刷的 力扣整理出的 520 题,每道题都写了解题思路,并且每题都 ru ...

  4. Github最强算法刷题笔记.pdf

    资料一 昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙 ...

  5. 算法刷题宝典.pdf

    今天推荐一个关于「算法刷题宝典」的开源项目:力扣Cookbook. 力扣 Cookbook是@halfrost(中文名:霜神)去年刷的 力扣整理出的 520 题,每道题都写了解题思路,并且每题都 ru ...

  6. Leetode算法刷题宝典.pdf

    今天推荐一个关于「算法刷题宝典」的开源项目:力扣Cookbook. 力扣 Cookbook是@halfrost(中文名:霜神)去年刷的 力扣整理出的 520 题,每道题都写了解题思路,并且每题都 ru ...

  7. LeetCode 牛客网 C++ 算法 刷题必备基础知识

    LeetCode 牛客网 C++ 算法 刷题必备基础知识 {ignore} 文章目录 LeetCode 牛客网 C++ 算法 刷题必备基础知识 {ignore} main综合模板 数组排序库 字符串库 ...

  8. 卧槽,「算法刷题宝典」开放下载!

    今天推荐一个关于「算法刷题宝典」的开源项目:力扣Cookbook. 力扣 Cookbook是@halfrost(中文名:霜神)去年刷的 力扣整理出的 520 题,每道题都写了解题思路,并且每题都 ru ...

  9. 字节大老耗时5年总结的算法刷题笔记(全彩漫画版)

    前言 王国维先生在<人间词话>中写道:古今之成大事业.大学问者,必经过三种境界:"昨夜西风凋碧树.独上高楼,望尽天涯路."此第一境也."衣带渐宽终不悔,为伊消 ...

最新文章

  1. 用memcache.php监测memcache的状况
  2. 看看函数名和注释,AI就能自动生成代码,程序员:这不真实,我要失业
  3. 关于分布式多级缓存架构,也许你一直考虑的太简单了
  4. 一点一滴培养你的领导气质
  5. 4安装-企业级 Hyper-v 群集部署实验方案
  6. 学习 TList 类的实现[5]
  7. 介绍十种数据恢复的软件工具
  8. 直播预告:基于动态词表的对话生成研究 | PaperWeekly x 微软亚洲研究院
  9. 获取上传文件的后缀名
  10. Android事件分发溯源详解
  11. 使用MybatisPlus在实体中添加数据库表中不存在的字段
  12. cve-2020-0796_微软SMBv3 Client/Server远程代码执行漏洞简单分析(CVE20200796)
  13. linux qt qpa linuxfb,Qt 5.4带有Tslib的Linux触摸屏输入在Raspberry Pi上无法使用LinuxFB QPA平台插件...
  14. 读 Paxos 到 ZooKeeper ¥ 50大洋
  15. Markdown格式表情包大全最新整理分享
  16. 搜狗拼音输入法2015 v7.2f 官方版
  17. 123道c++笔试题汇总
  18. linux修改SSH密码的方法
  19. python qq群_python qq群机器人怎么弄
  20. EN 14339地下消防栓—CE认证

热门文章

  1. Android扫描系统文件,安卓文档扫描仪
  2. Chapter 9 Physically Based Shading
  3. 商标权的取得方式有哪些
  4. matlab中asc格式,matlab将图片转换成asc码txt文本格式 | 学步园
  5. 服务器raid1硬盘更换,服务器做 Raid1,一块硬盘坏如何更换? - 电脑技巧 Power By www.hugesky.com...
  6. 变换Transformation(1)(笔记)
  7. Tensorflow(八) —— Tensor的合并与切割
  8. eslint搭配prettier出现Replace `XXX` with `··········XXX·······`的问题解决方法
  9. spring boot runner,destory监听
  10. java中的构造方法必须和类名相同,在Java中,关于构造方法,下列说法错误的是()A、构造方法的名称必须与类名相同B、构造方法可以...