- 算法是基本功,有了基本功之后,学习区块链、人工智能就非常快了。
- 新技术的迭代非常快,但是核心和本质的东西是不变。
- 基础知识就像一座大楼的地基,它决定了我们的技术高度。基础知识就是操作系统、计算机网络、编译原理和数据结构和算法等等。
- 大厂面试都在考算法,相比短期的能力,他们更看重你的长期潜力。
- 掌握了数据结构和算法,更有利于阅读框架源码和背后的设计思想。在工作中也能写出性能更优的代码。
- 基础架构研发工程师,写出达到开源水平的框架才是你的目标。只会CRUD,写凑合能用的代码,陷入35岁瓶颈,很容易被后浪淘汰。
- 掌握了数据结构与算法,你看待问题的深度,解决问题的角度就会完全不一样。算法,是一种解决问题的思路和方法,有机会应用到生活和事业的其他方面。
- 长期来看,大脑思考能力是个人最重要的核心竞争力,而算法是为数不多的能够有效训练大脑思考能力的途径之一。
- 算法并不可怕,关键是找到好的系统和高效的学习方法,抓中重点。
- 数据结构就是一组数据的存储结构,算法就是操作数据的一组方法。就像图书馆一样,书籍是数据,算法是如何高效的找到需要的书。
- 数据结构是为算法服务的,算法要作用在特定的数据结构之上。
- 学习算法要学习它的“来历”、“自身的特点”、“适合解决的问题”以及“实际的应用场景”。了解每个算法“是什么”,思考“为什么”,遇到问题就知道“怎么做”。
- 边学边练,适度刷题。
- 多问、多思考。
- 打怪升级学习法,设定一个切实可行的目标。
- 学习知识的过程是反复迭代、不断沉淀的过程。
- 10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树。
- 10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。
- 复杂的分析【第一阶段 M 10分】
- 时间复杂度
- 空间复杂度
- 数据结构
- 线性表【第一阶段 E 8分】
- 数组
- 链表【第一阶段 M 9分】
- 栈
- 队列
- 散列表
- 树
- 图
- 堆
- 线性表【第一阶段 E 8分】
- 算法
- 排序【第一阶段 E 7分】
- O(n^2)
- 冒泡排序
- 插入排序
- 选择排序
- 希尔排序
- O(nlogn)
- 归并排序
- 快速排序
- 堆排序
- O(n)
- 计数排序
- 基数排序
- 桶排序
- O(n^2)
- 搜索
- 深度优先
- 广度优先
- A*启发式搜索
- 查找【第一阶段 E 7分】
- 线性查找
- 树结构查找
- 散列表查找
- 字符串匹配
- 朴素
- KMP
- Robin-Karp
- Boyer-Moore
- AC自动机
- Trie
- 后缀数组
- 基本算法思想
- 贪心算法
- 分治算法
- 动态规划
- 回溯算法
- 枚举算法
- 排序【第一阶段 E 7分】
- 其他
- 数论
- 计算几何
- 概率分析
- 并查集
- 拓扑网络
- 矩阵运算
- 线性规划