题号 第一遍(学习别人的解法
)

第二遍(默写) 第三遍(过一天后)

第四遍(过一周后) 第五遍(面试前一周)
数组(9)
283.移动零
1.两数之和
11.盛最多水得容器
70.爬楼梯
15.三数之和
26.删除排序数组中的重复项
189.旋转数组
88.合并两个有序数组
66.加一

链表(6)

  1. 反转链表
    24. 两两交换链表中的节点
    141. 环形链表
    142. 环形链表 II
    25. K 个⼀组翻转链表
    21. 合并两个有序链表

    栈、队列(6 题)

  2. 有效的括号
    155. 最⼩栈
    84. 柱状图中最⼤的矩形
    239. 滑动窗⼝最⼤值
    641. 设计循环双端队列
    42. 接⾬⽔

哈希表、映射、集合(3 题)

  1. 有效的字⺟异位词
    49. 字⺟异位词分组
    1. 两数之和

树、⼆叉树、⼆叉搜索树(5 题)

题号 第一遍(学习别人的解法
)
第二遍(默写) 第三遍(过一天后) 第四遍(过一周后) 第五遍(面试前一周)
94. ⼆叉树的中序遍历 20200910
144. ⼆叉树的前序遍历 20200910
590. N叉树的后序遍历 20200910
589. N叉树的前序遍历 20200910
429. N叉树的层序遍历 20200910

递归、树的递归(12 题)

  1. 爬楼梯
    22. 括号⽣成
    226. 翻转⼆叉树
    98. 验证⼆叉搜索树
    104. ⼆叉树的最⼤深度
    111. ⼆叉树的最⼩深度
    297. ⼆叉树的序列化与反序列化
    236. ⼆叉树的最近公共祖先
    105. 从前序与中序遍历序列构造⼆叉树
    77. 组合
    46. 全排列
    47. 全排列 II

分治、回溯(5 题)

  1. Pow(x, n)
    78. ⼦集
    17. 电话号码的字⺟组合
    169. 多数元素
    51. N皇后

    DFS、BFS(8 题)

  2. ⼆叉树的层序遍历
    433. 最⼩基因变化
    22. 括号⽣成
    515. 在每个树⾏中找最⼤值
    127. 单词接⻰
    126. 单词接⻰ II
    529. 扫雷游戏
    200. 岛屿数量

    贪⼼算法(7 题)

  3. 零钱兑换
    860. 柠檬⽔找零
    122. 买卖股票的最佳时机 II
    455. 分发饼⼲
    874. 模拟⾏⾛机器⼈
    55. 跳跃游戏
    45. 跳跃游戏 II

⼆分查找(5 题)

  1. x 的平⽅根
    367. 有效的完全平⽅数
    33. 搜索旋转排序数组
    74. 搜索⼆维矩阵
    153. 寻找旋转排序数组中的最⼩值

动态规划(DP)(29 题)

  1. 不同路径
    63. 不同路径 II
    1143. 最⻓公共⼦序列
    70. 爬楼梯
    53. 最⼤⼦序和
    152. 乘积最⼤⼦数组
    322. 零钱兑换
    198. 打家劫舍
    213. 打家劫舍 II
    121. 买卖股票的最佳时机
    122. 买卖股票的最佳时机 II
    123. 买卖股票的最佳时机 III
    309. 最佳买卖股票时机含冷冻期
    188. 买卖股票的最佳时机 IV
    714. 买卖股票的最佳时机含⼿续费
    91. 解码⽅法
    64. 最⼩路径和
    221. 最⼤正⽅形
    621. 任务调度器
    647. 回⽂⼦串
    32. 最⻓有效括号
    72. 编辑距离
    363. 矩形区域不超过 K 的最⼤数值和
    403. ⻘蛙过河
    410. 分割数组的最⼤值
    552. 学⽣出勤记录 II
    76. 最⼩覆盖⼦串
    312. 戳⽓球

字典树(Trie)、并查集(6 题)

  1. 实现 Trie (前缀树)
    102. ⼆叉树的层序遍历
    212. 单词搜索 II
    200. 岛屿数量
    547. 朋友圈
    130. 被围绕的区域

⾼级搜索(10 题)

剪枝

  1. 爬楼梯
    22. 括号⽣成
    51. N皇后
    36. 有效的数独
    37. 解数独

    双向 BFS

  2. 单词接⻰
    433. 最⼩基因变化

启发式搜索 A*(选做)

  1. ⼆进制矩阵中的最短路径
    773. 滑动谜题
    37. 解数独

红⿊树和 AVL(了解原理)

位运算(6 题)

  1. 位1的个数
    231. 2的幂
    190. 颠倒⼆进制位
    51. N皇后
    52. N皇后 II
    338. ⽐特位计数

布隆过滤器、LRU Cache(了解原理及其实现)(1 题)

  1. LRU缓存机制

    排序算法(4 题)(⼿写冒泡、插⼊、选择、归并、快排的代码)

  2. 数组的相对排序
    242. 有效的字⺟异位词
    56. 合并区间
    493. 翻转对

⾼级DP(9 题)(状态定义有更多的维度,DP ⽅程更加复杂)

  1. 爬楼梯
    746. 使⽤最⼩花费爬楼梯
    72. 编辑距离
    300. 最⻓上升⼦序列
    91. 解码⽅法
    32. 最⻓有效括号
    85. 最⼤矩形
    115. 不同的⼦序列
    818. 赛⻋

字符串算法(25 题)

  1. 转换成⼩写字⺟
    58. 最后⼀个单词的⻓度
    771. 宝⽯与⽯头
    387. 字符串中的第⼀个唯⼀字符
    8. 字符串转换整数 (atoi)
    14. 最⻓公共前缀
    344. 反转字符串
    541. 反转字符串 II
    151. 翻转字符串⾥的单词
    557. 反转字符串中的单词 III
    917. 仅仅反转字⺟
    242. 有效的字⺟异位词
    49. 字⺟异位词分组
    438. 找到字符串中所有字⺟异位词
    125. 验证回⽂串
    680. 验证回⽂字符串 Ⅱ
    5. 最⻓回⽂⼦串
    205. 同构字符串
    32. 最⻓有效括号

    字符串 + DP

  2. 最⻓公共⼦序列
    72. 编辑距离
    5. 最⻓回⽂⼦串
    10. 正则表达式匹配
    44. 通配符匹配
    115. 不同的⼦序列

算法训练营课后习题.pdf