Problem List
https://programmercarl.com/
数组
- 704. 二分查找(二分查找)
- 35. 搜索插入位置
- 34. 在排序数组中查找元素的第一个和最后一个位置[[1. 数组#34. 在排序数组中查找元素的第一个和最后一个位置]]
- 69. x 的平方根[[1. 数组#69. x 的平方根]]
- 367. 有效的完全平方数
- 27. 移除元素(双指针)
- 26. 删除排序数组中的重复项
- 283. 移动零
- 844. 比较含退格的字符串
- 977. 有序数组的平方[[1. 数组#977. 有序数组的平方]](双指针)
- 209. 长度最小的子数组(滑动窗口)
- 904.水果成篮
- 76.最小覆盖子串[[1. 数组#76. 最小覆盖子串]]
- 59. 螺旋矩阵 II(模拟)
- 54. 螺旋矩阵
链表
- 203. 移除链表元素(节点删除)
- 707. 设计链表
- 206. 翻转链表[[2. 链表#206. 反转链表]]
- 24. 两两交换链表中的节点
- 19. 删除链表的倒数第 N 个节点
- 面试题 02.07. 链表相交
- 142. 环形链表 II
哈希表
- 242. 有效的字母异位词[[3. 哈希表#242. 有效的字母异位词]]
- 383. 赎金信
- 49. 字母异位词分组[[3. 哈希表#49. 字母异位词分组]]
- 438. 找到字符串中所有字母异位词[[3. 哈希表#438. 找到字符串中所有字母异位词]]
- 349. 两个数组的交集
- 350. 两个数组的交集 II
- 202. 快乐数[[3. 哈希表#202. 快乐数]]
- 1. 两数之和
- 454. 四数相加 II
- 15. 三数之和[[3. 哈希表#15. 三数之和]]
- 18. 四数之和
字符串
- 344. 反转字符串
- 541. 反转字符串 II
- 151. 翻转字符串里的单词
- 189. 轮转数组[[4. 字符串#189. 轮转数组]]
- 28. 实现
strStr()[[4. 字符串#28. 实现strStr()]] - 459. 重复的子字符串[[4. 字符串#459. 重复的子字符串]]
栈与队列
- 232. 用栈实现队列
- 225. 用队列实现栈
- 20. 有效的括号
- 1047. 删除字符串中的所有相邻重复项
- 150. 逆波兰表达式求值
- 239. 滑动窗口最大值
- 347. 前 K 个高频元素[[5. 栈与队列#347. 前 K 个高频元素]]
二叉树(1)
- 144. 二叉树的前序遍历[[6. 二叉树(1)#144. 二叉树的前序遍历]]
- 145. 二叉树的后序遍历[[6. 二叉树(1)#145. 二叉树的后序遍历]]
- (!!!)94. 二叉树的中序遍历[[6. 二叉树(1)#94. 二叉树的中序遍历]]
- 102. 二叉树的层序遍历[[6. 二叉树(1)#102. 二叉树的层序遍历]]
- 107. 二叉树的层次遍历 II
- 199. 二叉树的右视图
- 637. 二叉树的层平均值
- 429. N 叉树的层序遍历
- 515. 在每个树行中找最大值
- 116. 填充每个节点的下一个右侧节点指针
- 117. 填充每个节点的下一个右侧节点指针 II
- 104. 二叉树的最大深度
- 111. 二叉树的最小深度
- 559. n 叉树的最大深度
二叉树(2)
- 226. 翻转二叉树
- (!)101. 对称二叉树
- 100. 相同的树
- (!)572. 另一个树的子树[[7. 二叉树(2)#572. 另一个树的子树]]
- 222. 完全二叉树的节点个数[[7. 二叉树(2)#222. 完全二叉树的节点个数]]
- 110. 平衡二叉树
- 257. 二叉树的所有路径
- 404. 左叶子之和
- 513. 找树左下角的值[[7. 二叉树(2)#513. 找树左下角的值]]
- 112. 路径总和
- 113. 路径总和 II[[7. 二叉树(2)#113. 路径总和 II]]
- 106. 从中序与后序遍历序列构造二叉树[[7. 二叉树(2)#106. 从中序与后序遍历序列构造二叉树]]
- 105. 从前序与中序遍历序列构造二叉树
- 654. 最大二叉树[[7. 二叉树(2)#654. 最大二叉树]]
- 617. 合并二叉树
二叉树(3)
- 700. 二叉搜索树中的搜索
- 98. 验证二叉搜索树[[8. 二叉树(3)#98. 验证二叉搜索树]]
- 530. 二叉搜索树的最小绝对差
- 501. 二叉搜索树中的众数
- (!)236. 二叉树的最近公共祖先[[8. 二叉树(3)#236. 二叉树的最近公共祖先]]
- 235. 二叉搜索树的最近公共祖先
- 701. 二叉搜索树中的插入操作
- 450. 删除二叉搜索树中的节点
- 669. 修剪二叉搜索树
- 108. 将有序数组转换为二叉搜索树
- 538. 把二叉搜索树转换为累加树
回溯算法
- 77. 组合[[9. 回溯算法#77. 组合]]
- 216. 组合总和 III
- 17. 电话号码的字母组合
- 39. 组合总和
- 40. 组合总和 II
- 131. 分割回文串[[9. 回溯算法#131. 分割回文串]]
- 93. 复原 IP 地址
- 78. 子集
- 90. 子集 II[[9. 回溯算法#90. 子集 II]]
- (!!)491. 递增子序列[[9. 回溯算法#491. 递增子序列]]
- 46. 全排列
- 47. 全排列 II
- 332. 重新安排行程[[9. 回溯算法#332. 重新安排行程]]
- 51. N 皇后[[9. 回溯算法#51. N 皇后]]
- 37. 解数独
贪心算法(1)
- 455. 分发饼干
- 376. 摆动序列[[10. 贪心算法(1)#376. 摆动序列]]
- 53. 最大子序和[[10. 贪心算法(1)#53. 最大子序和]]
- 122. 买卖股票的最佳时机 II
- 55. 跳跃游戏
- 45. 跳跃游戏 II[[10. 贪心算法(1)#45. 跳跃游戏 II]]
- 1005. K 次取反后最大化的数组和[[10. 贪心算法(1)#1005. K 次取反后最大化的数组和]]
- (!!!)134. 加油站[[10. 贪心算法(1)#134. 加油站]]
贪心算法(2)
- (!)135. 分发糖果[[11. 贪心算法(2)#135. 分发糖果]]
- 860. 柠檬水找零
- 406. 根据身高重建队列
- 452. 用最少数量的箭引爆气球[[11. 贪心算法(2)#452. 用最少数量的箭引爆气球]]
- (!!)435. 无重叠区间[[11. 贪心算法(2)#435. 无重叠区间]]
- 763. 划分字母区间
- 56. 合并区间
- (!)738. 单调递增的数字[[11. 贪心算法(2)#738. 单调递增的数字]]
- 968. 监控二叉树[[11. 贪心算法(2)#968. 监控二叉树]]
单调栈
- 739. 每日温度
- 496. 下一个更大元素 I
- 503. 下一个更大元素 II
- (!)42. 接雨水[[12. 单调栈#42. 接雨水]]
- (!!)84. 柱状图中最大的矩形[[12. 单调栈#84. 柱状图中最大的矩形]]
动态规划(1)
- 509. 斐波那契数
- 70. 爬楼梯
- 746. 使用最小花费爬楼梯
- 62. 不同路径
- 63. 不同路径 II
- 343. 整数拆分[[13. 动态规划(1)#343. 整数拆分]]
- 96. 不同的二叉搜索树
动态规划(2)
- 416. 分割等和子集
- 1049. 最后一块石头的重量 II
- 494. 目标和[[14. 动态规划(2)#494. 目标和]]
- 474. 一和零
- 518. 零钱兑换 II
- (!!)377. 组合总和 IV[[14. 动态规划(2)#377. 组合总和 IV]]
- 70. 爬楼梯(进阶版)
- 322. 零钱兑换
- 279. 完全平方数
- 139. 单词拆分[[14. 动态规划(2)#139. 单词拆分]]
动态规划(3)
- 198. 打家劫舍
- 213. 打家劫舍 II[[15. 动态规划(3)#213. 打家劫舍 II]]
- (!)337. 打家劫舍 III[[15. 动态规划(3)#337. 打家劫舍 III]]
- 121. 买卖股票的最佳时机
- 122. 买卖股票的最佳时机 II
- 123. 买卖股票的最佳时机 III
- 188. 买卖股票的最佳时机 IV[[15. 动态规划(3)#188. 买卖股票的最佳时机 IV]]
- 309. 最佳买卖股票时机含冷冻期
- 714. 买卖股票的最佳时机含手续费[[15. 动态规划(3)#714. 买卖股票的最佳时机含手续费]]
动态规划(4)
- (!!)300. 最长上升子序列[[16. 动态规划(4)#300. 最长上升子序列]]
- 1143. 最长公共子序列
- 1035. 不相交的线
- 674. 最长连续递增序列
- (!)718. 最长重复子数组[[16. 动态规划(4)#718. 最长重复子数组]]
- 53. 最大子序和
- 392. 判断子序列
- 115. 不同的子序列
- 583. 两个字符串的删除操作
- 72. 编辑距离
- 647. 回文子串[[16. 动态规划(4)#647. 回文子串]]
- 516. 最长回文子序列
图论(1)
- 797. 所有可能的路径
- 200. 岛屿数量
- 695. 岛屿的最大面积
- 1020. 飞地的数量
- 130. 被围绕的区域[[17. 图论(1)#130. 被围绕的区域]]
- 417. 太平洋大西洋水流问题[[17. 图论(1)#417. 太平洋大西洋水流问题]]
- 827. 最大人工岛
图论(2)
- 127. 单词接龙[[18. 图论(2)#127. 单词接龙]]
- 841. 钥匙和房间[[18. 图论(2)#841. 钥匙和房间]]
- 463. 岛屿的周长
- 1971. 寻找图中是否存在路径
- 684. 冗余连接
- 685. 冗余连接 II[[18. 图论(2)#685. 冗余连接 II]]
图论(3)
- 1584. 连接所有点的最小费用
- 207. 课程表
- 210. 课程表 II
- 743. 网络延迟时间
- 1334. 阈值距离内邻居最少的城市
- 787. Cheapest Flights Within K Stops
- 1514. Path with Maximum Probability
- 1368. Minimum Cost to Make at Least One Valid Path in a Grid
- 499. The Maze III
- 1631. Path With Minimum Effort
- 882. Reachable Nodes In Subdivided Graph
- 1786. Number of Restricted Paths From First to Last Node
- 505. The Maze II
额外题目
- 1365. 数组:有多少小于当前数字的数字
- 941. 数组:有效的山脉数组
- 1207. 数组:独一无二的出现次数
- 724. 数组:寻找数组的中心索引
- 922. 数组:按奇偶排序数组 II
- 234. 链表:回文链表
- 143. 链表:重排链表
- 141. 链表:环形链表
- 205. 哈希表:同构字符串
- 1002. 哈希表:查找常用字符
- 925. 字符串:长按键入
- 129. 二叉树:求根到叶子节点数字之和
- 1382. 二叉树:将二叉搜索树变平衡
- 52. 回溯算法:N 皇后 II
- 649. 贪心:Dota2 参议院
- 1221. 贪心:分割平衡字符串
- 5. 动态规划:最长回文子串
- 132. 动态规划:分割回文串 II
- 673. 动态规划:最长递增子序列的个数
- 657. 模拟:机器人能否返回原点
- 31. 模拟:下一个排列
- 1356. 位运算:根据数字二进制下 1 的数目排序