当前位置 博文首页 > 程序员吴师兄的博客:知乎高赞,如何系统地学习算法?

    程序员吴师兄的博客:知乎高赞,如何系统地学习算法?

    作者:[db:作者] 时间:2021-06-13 09:37

    大家好,我是程序员吴师兄,之前我在知乎写过一个回答如何系统地学习算法,截至目前已经收获了 1w 的赞同,今天特定整理一下,分享给 C 站的小伙伴们,有帮助记得点赞哟

    在这里插入图片描述

    以下为原文。


    不 BB,直接上干货,非科班出生,毕业工作后才开始学算法,到目前学了 4 年 !!!

    为了让你对数据结构和算法能有个全面的认识,我画了一张图,里面几乎涵盖了所有数据结构和算法书籍中都会讲到的知识点。

    img

    这里面有10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

    掌握了这些基础的数据结构和算法,再学更加复杂的数据结构和算法,就会非常容易、非常快。

    1、复杂度分析

    看动画轻松理解时间复杂度(一)

    看动画轻松理解时间复杂度(二)

    冰与火之歌:「时间」与「空间」复杂度

    每个程序员都应该收藏的算法复杂度速查表

    2、基本算法思想

    五分钟了解一下什么是「贪心算法 」

    有了四步解题法模板,再也不害怕动态规划!

    (进阶版)有了四步解题法模板,再也不害怕动态规划!

    (再进阶版)有了四步解题法模板,再也不害怕动态规划!

    浅谈什么是分治算法

    看动画轻松理解「递归」与「动态规划」

    浅谈什么是动态规划以及相关的「股票」算法题

    深度解析「正则表达式匹配」:从暴力解法到动态规划

    3、排序算法

    「多图警告」手撕排序算法 – iOS进阶必备

    十大经典排序算法动画与解析,看我就够了!(配代码完全版)

    这或许是东半球分析十大排序算法最好的一篇文章

    4、搜索

    几道和「广度优先搜索」有关的算法面试题

    初识广度优先搜索与解题套路

    从简单二叉树问题重新来看深度优先搜索

    5、查找

    二分查找算法详解

    一网打尽!二分查找解题模版与题型全面解析

    面试官,我会写二分查找法!对,没有 bug 的那种!

    6、字符串匹配

    动画:BM 算法中的坏字符规则与好后缀规则

    动画:七分钟理解什么是KMP算法

    动画:什么是 BF 算法 ?

    动态规划之 KMP 算法详解(配代码版)

    7、线性表

    如何高效对有序数组/链表去重?

    超详细!详解一道高频算法题:数组中的第 K 个最大元素

    一道简单的数组遍历题,加上四个条件后感觉无从下手

    数组特性的妙用!如何找到「缺失的第一个正数」

    剑指 offer 第一题:二维数组中的查找

    动画:什么是单调栈?

    在数据结构中穿针引线:链表实现栈和队列

    从简单的线性数据结构开始:栈与队列

    五分钟学算法小知识:用栈实现队列/用队列实现栈

    几道和「堆栈、队列」有关的面试算法题

    超详细!图解「合并 K 个排序链表」

    动画:面试如何轻松手写链表?

    LeetCode 上最难的链表算法题,没有之一!

    链表算法面试问题?看我就够了!

    看动画轻松理解「链表」实现「LRU缓存淘汰算法」

    从简单的线性数据结构开始:穿针引线的链表(一)

    在数据结构中穿针引线:链表实现栈和队列

    8、散列表

    五分钟速读:什么是散列表(哈希表)?

    什么是哈希洪水攻击(Hash-Flooding Attack)?

    几道和散列(哈希)表有关的面试题

    如何判断一个元素在亿级数据中是否存在?

    9、树

    面试前准备:二叉树高频面试题和答案

    懵逼树上懵逼果:学习二分搜索树

    LeetCode 二叉树问题小总结

    从简单二叉树问题重新来看深度优先搜索

    几道和「二叉树」有关的算法面试题

    详解什么是平衡二叉树(AVL)(修订补充版)

    【面试现场】为什么 MySQL 数据库要用B+树存储索引?

    字典树概念与题型解析

    面试官:为什么 MySQL 的索引要使用 B+ 树,而不是其它树?比如 B 树?

    心里没点 B 树。。。

    数据结构与算法——最小生成树

    植树节,程序猿种的那些树

    数据结构与算法——2-3-4树

    数据结构与算法——2-3树

    看动画轻松理解「Trie树」

    10、图

    浅谈什么是图拓扑排序

    数据结构与算法——图论基础与图存储结构

    数据结构与算法:三十张图弄懂「图的两种遍历方式」

    数据结构与算法——图最短路径

    总结

    学习数据结构和算法的过程,是非常好的思维训练的过程,所以,千万不要被动地记忆,要多辩证地思考,多问为什么。

    如果你一直这么坚持做,你会发现,等你学完之后,写代码的时候就会不由自主地考虑到很多性能方面的事情,时间复杂度、空间复杂度非常高的垃圾代码出现的次数就会越来越少。

    你的编程内功就真正得到了修炼。大家加油:)

    作者简介

    作者:大家好,我是程序员吴师兄,在 GitHub 上开源了一个项目 LeetCodeAnimation,目前有 60k star,通过动画的形式讲解算法,已经帮助成千上万的程序员入门算法了,欢迎关注公众号「五分钟学算法」,和我们一起学习算法。
    转载说明:未获得授权,禁止转载