算法大全
一、核心算法思想类
这类算法是解决问题的“策略逻辑”,决定如何思考、拆解问题,是编程解题的核心框架:
| 算法思想分类 | 包含的具体算法(及力扣标签) | 核心特点 | 
|---|---|---|
| 暴力枚举 | 枚举、模拟、脑筋急转弯 | 直接遍历所有可能,适合小规模/逻辑简单场景,效率低但思路直观 | 
| 分治思想 | 分治、递归、回溯、深度优先搜索(DFS)、广度优先搜索(BFS)、记忆化搜索、双向链表(部分场景) | 把大问题拆成子问题解决,递归是实现分治的常用手段,回溯是“试错 + 回退”的分治 | 
| 动态规划 | 动态规划、前缀和、滑动窗口、状态压缩、记忆化搜索、单调队列(优化 DP) | 用“空间换时间”,保存子问题结果避免重复计算,核心是找状态转移方程 | 
| 贪心策略 | 贪心、数学、几何、博弈、单调栈/队列(贪心优化工具) | 每一步选局部最优,期望全局最优(需证明适用场景),常和排序/单调结构结合 | 
| 搜索与剪枝 | 深度优先搜索(DFS)、广度优先搜索(BFS)、二分查找、双向搜索、记忆化搜索、剪枝(隐式) | 主动遍历可能解空间,二分通过“缩小范围”剪枝,DFS/BFS 靠剪枝优化效率 | 
| 排序与查找 | 排序(冒泡/快排等)、二分查找、滑动窗口(依赖有序性)、字符串匹配(如 KMP) | 基于数据“有序性”解决问题,排序是基础,二分是高效查找手段 | 
二、数据结构关联类
这类算法依赖特定数据结构的特性实现,是“数据结构 + 算法逻辑”的结合体:
| 数据结构分类 | 关联算法(及力扣标签) | 核心依赖的数据结构特性 | 
|---|---|---|
| 数组/字符串 | 数组、字符串、双指针、滑动窗口、前缀和、差分、线段树、树状数组 | 利用数组的“连续存储、随机访问”特性,解决区间查询、修改、匹配等问题 | 
| 链表 | 链表、双向链表、递归(链表天然递归结构)、分治(链表拆分合并) | 依赖链表的“离散存储、指针连接”特性,解决插入、删除、环检测等问题 | 
| 树结构 | 树、二叉树、二叉搜索树、字典树、线段树、树状数组、拓扑排序(树/图的依赖关系) | 利用树的“分层结构、递归子树”特性,解决层级遍历、搜索、区间统计等问题 | 
| 哈希表/映射 | 哈希表、哈希函数、滚动哈希、前缀和(哈希辅助)、并查集(路径压缩用哈希思想) | 依赖哈希的“快速映射、去重”特性,解决查找、分组、去重、冲突检测等问题 | 
| 队列/栈 | 队列、栈、单调栈/队列、优先队列(堆)、滑动窗口(双端队列辅助) | 利用栈的“后进先出”、队列的“先进先出”特性,解决括号匹配、单调序列、拓扑排序 | 
| 图结构 | 图、深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径(Dijkstra/Floyd)、并查集、拓扑排序 | 依赖图的“节点 + 边”结构,解决路径规划、连通性、依赖关系等问题 | 
三、应用场景 & 工具类
这类算法是特定场景的“解决方案套餐”,或解决问题的“辅助工具”,常和业务场景强关联:
| 场景工具分类 | 包含的算法(及力扣标签) | 典型应用场景 | 
|---|---|---|
| 字符串处理 | 字符串、字符串匹配、字典树、滚动哈希、前缀和(字符串版) | 文本搜索、词频统计、模式匹配(如代码编辑器的查找替换) | 
| 数学与几何 | 数学、几何、组合数学、数论、博弈、概率与统计 | 解决纯数学推导问题(如质数判断、几何计算),或和游戏/模拟场景结合 | 
| 系统设计 | 设计、数据库、多线程、交互、状态压缩 | 面向工程化场景(如缓存设计、数据库分库分表),需考虑性能、扩展性、并发 | 
| 高级数据结构 | 并查集、单调栈/队列、线段树、树状数组、拓扑排序 | 解决复杂场景的“高效查询、区间修改、依赖处理”,是竞赛/工业级开发的常用工具 | 
| 优化与辅助 | 记忆化搜索、状态压缩、单调结构(栈/队列)、剪枝(隐式) | 不是独立算法,而是优化其他算法的“工具”,用于减少计算量、提升效率 | 
四、学习路径建议(按“基础→进阶”排序)
如果想系统学习,可以按以下顺序逐步掌握,每类先吃透基础,再拓展进阶:
- 
基础必学:
数组/字符串 → 排序/二分 → 链表 → 哈希表 → 递归/分治 → 动态规划(DP 入门) → 贪心
(对应力扣标签:数组字符串排序二分查找链表哈希表递归动态规划贪心) - 
进阶拓展:
滑动窗口(双指针进阶) → 单调栈/队列(贪心 + 栈) → 并查集/线段树(高级数据结构) → 图论(DFS/BFS/最短路径) → 状态压缩(DP 进阶)
(对应力扣标签:滑动窗口单调栈并查集线段树图深度优先搜索广度优先搜索状态压缩) - 
工程与数学:
设计(系统设计) → 数学(数论/几何) → 多线程 → 数据库
(对应力扣标签:设计数学几何多线程数据库) 
这样分类后,能清晰看到算法之间的关联(比如动态规划常和数组/字符串结合,贪心常和单调栈搭配),也更容易规划学习路径。遇到具体题目时,也能快速归类到某类思想/数据结构下,找对应解法模板~

                
            
        
浙公网安备 33010602011771号