常用算法汇总
| 算法 | 要点 | 适合题型 |
|---|
| 递归 | 递归算法要点总结 | 树遍历、分治、回溯 |
| 迭代 | 迭代算法要点总结 | 数组遍历、循环计算 |
| 滑动窗口 | 滑动窗口解题心得 | 字符串、子串、数组子区间 |
| 双指针 | 两指针相向/同向移动 | 有序数组、快慢指针 |
| 二分查找 | 折半查找、边界判断 | 有序数组搜索、查找左侧/右侧边界 |
| 深度优先搜索 | 栈/递归、深入回溯 | 树遍历、岛屿数量、路径寻找 |
| 广度优先搜索 | 队列、层级扩展 | 最短路径、层级遍历 |
| 动态规划 | 状态定义、转移方程 | 最优子结构、重叠子问题 |
| 回溯 | 尝试 + 撤销、状态树 | 排列组合、子集、皇后问题 |
| 贪心 | 局部最优、贪心选择 | 活动选择、区间问题 |
| 分治 | 分解、解决、合并 | 归并排序、快速排序 |
| 哈希表 | 键值映射、O(1) 查找 | 两数之和、计数、去重 |
| 堆 | 优先队列、top K | 最大的 K 个数、数据流中位数 |
核心算法分类
基础算法
| 算法 | 要点 | 适合题型 |
|---|
| 排序 | 冒泡/选择/插入/归并/快速 | 有序数组、部分排序 |
| 二分 | 折半查找 | 有序数组搜索 |
| 位运算 | 与/或/异或/位移 | 数字操作、状态压缩 |
高级算法
| 算法 | 要点 | 适合题型 | |
|---|
| 动态规划 | DP 表、状态转移 | 最优路径、计数问题 | |
| 回溯 | 枚举 + 剪枝 | 全排列、组合总和 | |
| 图算法 | BFS/DFS/最短路径 | 迷宫、社交网络 | |
常见题型速查
| 题型 | 推荐算法 |
|---|
| 数组中找两数之和 | 哈希表 |
| 有序数组中查找 | 二分查找 |
| 子串/子数组问题 | 滑动窗口 |
| 树/图的遍历 | DFS/BFS |
| 最优子结构问题 | 动态规划 |
| 排列组合问题 | 回溯 |
| 最短路径问题 | BFS/堆 |
| top K 问题 | 堆/快速选择 |
参考资源
- LeetCode 分类刷题指南
- 前端算法面试高频题集