← 返回首页

DSA学习路径

数据结构与算法学习路径总结

概述

这是一个针对时间紧迫的学习者的速成规划,旨在帮助读者在短时间内掌握数据结构和算法的核心知识。该规划分为「数据结构」和「算法刷题」两大部分。

为什么选择速成规划?

1. 基于模板框架,统一的解法风格
2. 循序渐进,由浅入深,同时包含数据结构和算法
3. 科学的学习方法,丰富的辅助工具

学习建议



第一部分:数据结构

1. 数组/链表



2. 哈希表



- LinkedHashMap(用链表加强哈希表)
- ArrayHashMap(用数组加强哈希表)

3. 二叉树基础及遍历



- 二叉树基础及常见类型
- 二叉树的递归/层序遍历
- 多叉树的递归/层序遍历
- DFS和BFS的适用场景
- 层序遍历的三种写法模板

4. 二叉搜索树


5. 二叉堆



- 优先级队列是一种能够自动排序的数据结构
- 二叉堆是一种拥有特殊性质的完全二叉树
- 优先级队列的核心方法是swim, sink

6. 图结构


- 图结构基础及通用代码实现
- 图结构的DFS/BFS遍历

第二部分:算法刷题

1. 链表相关



- 双指针技巧秒杀七道链表题目
- 练习:链表双指针经典习题
- 如何判断回文链表
- 单链表的花式反转方法汇总

2. 数组相关




- 双指针技巧秒杀七道数组题目
- 二维数组的花式遍历技巧
- 练习:数组双指针经典习题
- 滑动窗口算法核心代码模板
- 练习:滑动窗口算法经典习题
- 二分搜索算法核心代码模板
- 实际运用二分搜索时的思维框架
- 二分搜索三种代码模板
- 小而美的算法技巧:前缀和数组/差分数组

3. 队列/栈


- 队列实现栈以及栈实现队列
- 练习:栈/队列的经典习题
- 单调栈算法模板解决三道例题
- 单调队列结构解决滑动窗口问题
- 练习:单调栈/队列的几种变体及经典习题

4. 二叉树 & 递归思想



- 一个视角+两种思维模式搞定递归
- 二叉树系列算法核心纲领
- 二叉树心法(思路篇/构造篇/序列化篇)
- 拓展:最近公共祖先系列解题框架
- 拓展:如何计算完全二叉树的节点数
- 练习:用不同思维模式解题

5. 二叉搜索树


- 二叉搜索树心法(特性篇/基操篇)
- 二叉搜索树心法(构造篇)

6. 数据结构设计


- 算法就像搭乐高:手撸LRU/LFU算法
- 实现计算器
- 更多经典设计习题

7. 图算法


- 环检测及拓扑排序算法
- 二分图判定算法
- Union Find并查集算法
- 最小生成树问题(Kruskal算法)
- Dijkstra最短路径算法

8. DFS/回溯算法



- 回溯算法解题套路框架
- 回溯算法实践:数独和N皇后问题
- 回溯算法秒杀所有排列/组合/子集问题
- DFS算法:一文秒杀所有岛屿题目
- 练习:回溯算法经典习题

9. BFS算法



- BFS算法解题套路框架
- 练习:BFS经典习题

10. 动态规划



- 动态规划解题套路框架
- 动态规划设计:最长递增子序列
- base case和备忘录的初始值
- 最优子结构原理和dp数组遍历方向
- 经典动态规划问题(编辑距离、最大子数组、最长公共子序列、背包问题等)

11. 贪心算法



12. 分治算法



13. 数学及其他经典面试题


- 扫描线技巧:安排会议室
- 如何高效解决接雨水问题
- 一文秒杀所有丑数系列问题
- 带权重的随机选择算法
- 一个方法团灭nSum问题

14. 排序算法


学习方法总结

1. 先掌握框架再刷题:不要图省事不学框架就直接刷题
2. 题单的价值
- 提前了解公司考题的难度及算法类别
- 方便复习,检验学习效果
3. 学习步骤
- 先学常见的算法框架
- 再独立刷题单
- 掌握套路后,题单最多两三个小时就能刷完

工具与资源