知乎高赞,如何系统地学习算法?
Posted 吴师兄学算法
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了知乎高赞,如何系统地学习算法?相关的知识,希望对你有一定的参考价值。
大家好,我是程序员吴师兄,之前我在知乎写过一个回答如何系统地学习算法,截至目前已经收获了 1w 的赞同,今天特定整理一下,分享给 C 站的小伙伴们,有帮助记得点赞哟。
以下为原文。
不 BB,直接上干货,非科班出生,毕业工作后才开始学算法,到目前学了 4 年 !!!
为了让你对数据结构和算法能有个全面的认识,我画了一张图,里面几乎涵盖了所有数据结构和算法书籍中都会讲到的知识点。
这里面有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,通过动画的形式讲解算法,已经帮助成千上万的程序员入门算法了,欢迎关注公众号「五分钟学算法」,和我们一起学习算法。
转载说明:未获得授权,禁止转载
以上是关于知乎高赞,如何系统地学习算法?的主要内容,如果未能解决你的问题,请参考以下文章
知乎高赞回答:为什么高级程序员不必担心自己的技术过时?
知乎高赞:公司只有手工功能测试,如何自我提升?
知乎高赞3万的面试题,累计5000页,已被转2.6w次,肝的太累了
知乎高赞3万的面试题,累计5000页,已被转2.6w次,肝的太累了
知乎高赞!有没有适合新手练习 Python 的做题类网站?
知乎高赞:程序员需要达到什么水平才能顺利拿到20k?