《算法宝典:全类型题目索引》
目录
🌴递归、搜索与回溯
一、递归
二、二叉树中的深搜
三、穷举vs暴搜vs深搜vs回溯vs剪枝
四、综合练习
五、FloodFill 算法
六、记忆化搜索
🌵优选算法
一、双指针
二、滑动窗口
三、二分查找
四、前缀和
五、位运算
六、模拟
七、分治 - 快速排序
八、分治 - 归并排序
九、链表
十、哈希表
十一、字符串
十二、栈
十三、队列 + 宽搜(bfs)
十四、优先级队列(堆)
十五、BFS 解决 FloodFill 算法
十六、BFS 解决最短路问题
十七、多源 BFS
十八、BFS 解决拓扑排序
🌻贪心算法
🍇动态规划
一、斐波那契数列模型
二、路径问题
三、简单多状态 dp 问题
四、子数组、子串系列
五、子序列问题
六、回文串问题
七、两个数组的 dp
八、01 背包问题
九、完全背包问题
十、二维费用的背包问题
十一、似包非包
十二、卡特兰数
未完待续……
🌴递归、搜索与回溯
一、递归
- 面试题 08.06. 汉诺塔问题
- 21. 合并两个有序链表
- 206. 反转链表
- 24. 两两交换链表中的节点
- 50. Pow(x, n)
递归 1~5 题解 |
二、二叉树中的深搜
- 2331. 计算布尔二叉树的值
- 129. 求根节点到叶节点数字之和
- 814. 二叉树剪枝
- 98. 验证二叉搜索树
- 230. 二叉搜索树中第K小的元素
- 257. 二叉树的所有路径
深搜 1~6 题解 |
三、穷举vs暴搜vs深搜vs回溯vs剪枝
- 46. 全排列
- 78. 子集
穷举…剪枝 1~2 题解 |
四、综合练习
- 1863. 找出所有子集的异或总和再求和
- 47. 全排列 II
- 17. 电话号码的字母组合
- 22. 括号生成
- 77. 组合
- 494. 目标和
- 39. 组合总和
- 784. 字母大小写全排列
- 526. 优美的排列
- 51. N 皇后
- 36. 有效的数独
- 37. 解数独
- 79. 单词搜索
- 1219. 黄金矿工
- 980. 不同路径 III
递归与dfs综合练习 1~4 题解 |
递归与dfs综合练习 5~8 题解 |
递归与dfs综合练习 9~12 题解 |
递归与dfs综合练习 13~15 题解 |
五、FloodFill 算法
- 733. 图像渲染
- 200. 岛屿数量
- 695. 岛屿的最大面积
- 130. 被围绕的区域
- 417. 太平洋大西洋水流问题
- 529. 扫雷游戏
- LCR 130. 衣橱整理(原:面试题 13. 机器人的运动范围 )
floodfill算法 1~4 题解 |
floodfill算法 5~7 题解 |
六、记忆化搜索
- 509. 斐波那契数
- 62. 不同路径
- 300. 最长递增子序列
- 375. 猜数字大小 II
- 329. 矩阵中的最长递增路径
记忆化搜索 1~5 题解 |
🌵优选算法
一、双指针
- 283.移动零
- 1089.复写零
- 202.快乐数
- 11.盛最多水的容器
- 611.有效三角形的个数
- LCR 179.查找总价格为目标值的两个商品(原:剑指 offer:和为 s 的两个数)
- 15.三数之和
- 18.四数之和
双指针 1~4 题解 |
双指针 5~8 题解 |
二、滑动窗口
- 209.长度最小的子数组
- 3.无重复字符的最长子串
- 1004.最大连续1的个数 III
- 1658.将 x 减到 0 的最小操作数
- 904.水果成篮
- 438.找到字符串中所有字母异位词
- 30.串联所有单词的子串
- 76.最小覆盖子串
滑动窗口 1~4 题解 |
滑动窗口 5~8 题解 |
三、二分查找
- 704.二分查找
- 34.在排序数组中查找元素的第一个和最后一个位置
- 35.搜索插入位置
- 69.x 的平方根
- 852.山脉数组的峰顶索引
- 162.寻找峰值
- 153.寻找旋转排序数组中的最小值
- LCR 173.点名 (原:剑指 offer:0~n-1 中缺失的数字 )
二分查找 1~4 题解 |
二分查找 5~8 题解 |
四、前缀和
- DP34 【模板】一维前缀和
- DP35 【模板】二维前缀和
- 724.寻找数组的中心下标
- 238.除自身以外数组的乘积
- 560.和为 k 的子数组
- 974.和可被 k 整除的子数组
- 525.连续数组
- 1314.矩阵区域和
前缀和 1~4 题解 |
前缀和 5~8 题解 |
五、位运算
- 面试题 01.01. 判定字符是否唯一
- 268. 丢失的数字
- 371. 两整数之和
- 137. 只出现一次的数字 II
- 面试题 17.19. 消失的两个数字
- 191. 位1的个数
位运算 1~6 题解 |
六、模拟
- 1576. 替换所有的问号
- 495. 提莫攻击
- 6. Z 字形变换
- 38. 外观数列
- 1419. 数青蛙
模拟 1~5 题解 |
七、分治 - 快速排序
- 75. 颜色分类
- 912. 排序数组
- 215. 数组中的第K个最大元素
- LCR 159. 库存管理 III(原:剑指 Offer . 最小的k个数)
分治 - 快排 1~4 题解 |
八、分治 - 归并排序
- 912. 排序数组
- LCR 170. 交易逆序对的总数 (原:剑指 Offer . 数组中的逆序对)
- 315. 计算右侧小于当前元素的个数
- 493. 翻转对
分治 - 归并排序 1~4 题解 |
九、链表
- 2. 两数相加
- 24. 两两交换链表中的节点
- 143. 重排链表
- 23. 合并 K 个升序链表
- 25. K 个一组翻转链表
十、哈希表
- 1. 两数之和
- 面试题 01.02. 判定是否互为字符重排
- 217. 存在重复元素
- 219. 存在重复元素 II
- 49. 字母异位词分组
十一、字符串
- 14. 最长公共前缀
- 5. 最长回文子串
- 67. 二进制求和
- 43. 字符串相乘
十二、栈
- 1047. 删除字符串中的所有相邻重复项
- 844. 比较含退格的字符串
- 227. 基本计算器 II
- 394. 字符串解码
- 946. 验证栈序列
十三、队列 + 宽搜(bfs)
- 429. N 叉树的层序遍历
- 103. 二叉树的锯齿形层序遍历
- 662. 二叉树最大宽度
- 515. 在每个树行中找最大值
十四、优先级队列(堆)
- 1046. 最后一块石头的重量
- 703. 数据流中的第 K 大元素
- 692. 前K个高频单词
- 295. 数据流的中位数
十五、BFS 解决 FloodFill 算法
- 733. 图像渲染
- 200. 岛屿数量
- 695. 岛屿的最大面积
- 130. 被围绕的区域
十六、BFS 解决最短路问题
- 1926. 迷宫中离入口最近的出口
- 433. 最小基因变化
- 127. 单词接龙
- 675. 为高尔夫比赛砍树
十七、多源 BFS
- 542. 01 矩阵
- 1020. 飞地的数量
- 1765. 地图中的最高点
- 1162. 地图分析
十八、BFS 解决拓扑排序
- 207. 课程表
- 210. 课程表 II
- LCR 114. 火星词典
🌻贪心算法
- 860. 柠檬水找零
- 2208. 将数组和减半的最少操作次数
- 179. 最大数
- 376. 摆动序列
- 300. 最长递增子序列
- 334. 递增的三元子序列
- 674. 最长连续递增序列
- 121. 买卖股票的最佳时机
- 122. 买卖股票的最佳时机 II
- 1005. K 次取反后最大化的数组和
- 2418. 按身高排序
- 870. 优势洗牌
- 409. 最长回文串
- 942. 增减字符串匹配
- 455. 分发饼干
- 553. 最优除法
- 45. 跳跃游戏 II
- 55. 跳跃游戏
- 134. 加油站
- 738. 单调递增的数字
- 991. 坏了的计算器
- 56. 合并区间
- 435. 无重叠区间
- 452. 用最少数量的箭引爆气球
- 397. 整数替换
- 354. 俄罗斯套娃信封问题
- 1262. 可被三整除的最大和
- 1054. 距离相等的条形码
- 767. 重构字符串
🍇动态规划
一、斐波那契数列模型
- 1137. 第 N 个泰波那契数
- 面试题 08.01. 三步问题
- 746. 使用最小花费爬楼梯
- 91. 解码方法
二、路径问题
- 62. 不同路径
- 63. 不同路径 II
- LCR 166. 珠宝的最高价值(原:剑指 Offer 47. 礼物的最大价值)
- 931. 下降路径最小和
- 64. 最小路径和
- 174. 地下城游戏
三、简单多状态 dp 问题
- 面试题 17.16. 按摩师
- 213. 打家劫舍 II
- 740. 删除并获得点数
- LCR 091. 粉刷房子(原:剑指 Offer II 091. 粉刷房子)
- 309. 买卖股票的最佳时机含冷冻期
- 714. 买卖股票的最佳时机含手续费
- 123. 买卖股票的最佳时机 III
- 188. 买卖股票的最佳时机 IV
四、子数组、子串系列
- 53. 最大子数组和
- 918. 环形子数组的最大和
- 152. 乘积最大子数组
- 1567. 乘积为正数的最长子数组长度
- 413. 等差数列划分
- 978. 最长湍流子数组
- 139. 单词拆分
- 467. 环绕字符串中唯一的子字符串
五、子序列问题
- 300. 最长递增子序列
- 376. 摆动序列
- 673. 最长递增子序列的个数
- 646. 最长数对链
- 1218. 最长定差子序列
- 873. 最长的斐波那契子序列的长度
- 1027. 最长等差数列
- 446. 等差数列划分 II - 子序列
六、回文串问题
- 647. 回文子串
- 5. 最长回文子串
- 1745. 分割回文串 IV
- 132. 分割回文串 II
- 516. 最长回文子序列
- 1312. 让字符串成为回文串的最少插入次数
七、两个数组的 dp
- 1143. 最长公共子序列
- 1035. 不相交的线
- 115. 不同的子序列
- 44. 通配符匹配
- 10. 正则表达式匹配
- 97. 交错字符串
- 712. 两个字符串的最小ASCII删除和
- 718. 最长重复子数组
八、01 背包问题
- DP41【模板】01背包
- 416. 分割等和子集
- 494. 目标和
- 1049. 最后一块石头的重量 II
九、完全背包问题
- DP42【模板】完全背包
- 322. 零钱兑换
- 518. 零钱兑换 II
- 279. 完全平方数
十、二维费用的背包问题
- 474. 一和零
- 879. 盈利计划
十一、似包非包
- 377. 组合总和 Ⅳ
十二、卡特兰数
- 96. 不同的二叉搜索树