- 1. 两数之和: 简单
- 2. 两数相加: 中等
- 3. 无重复字符的最长子串: 中等
- 4. 寻找两个有序数组的中位数: 困难
- 5. 最长回文子串: 中等
- 6. Z 字形变换: 中等
- 7. 整数反转: 简单
- 8. 字符串转换整数 (atoi): 中等
- 9. 回文数: 简单
- 10. 正则表达式匹配: 困难
- 11. 盛最多水的容器: 中等
- 14. 最长公共前缀: 简单
- 15. 三数之和: 中等
- 16. 最接近的三数之和: 中等
- 17. 电话号码的字母组合: 中等
- 19. 删除链表的倒数第N个节点: 中等
- 20. 有效的括号: 简单
- 21. 合并两个有序链表: 简单
- 22. 括号生成: 中等
- 23. 合并K个排序链表: 困难
- 24. 两两交换链表中的节点: 中等(简单)
- 26. 删除排序数组中的重复项: 简单
- 31. 下一个排列: 中等
- 32. 最长有效括号: 困难
- 33. 搜索旋转排序数组: 中等
- 34. 在排序数组中查找元素的第一个和最后一个位置: 中等
- 35. 搜索插入位置: 简单
- 37. 解数独: 困难
- 39. 组合总和: 中等
- 40. 组合总和 II: 中等
- 41. 缺失的第一个正数: 困难
- 42. 接雨水: 困难
- 43. 字符串相乘: 中等
- 44. 通配符匹配: 困难
- 46. 全排列: 中等
- 47. 全排列 II: 中等
- 48. 旋转图像: 中等
- 49. 字母异位词分组: 中等(简单)
- 50. Pow(x, n): 中等
- 51. N 皇后: 困难
- 53. 最大子序和: 简单
- 55. 跳跃游戏: 中等
- 56. 合并区间: 中等
- 57. 插入区间: 困难(简单)
- 60. 第k个排列: 中等
- 62. 不同路径: 中等
- 63. 不同路径 II: 中等
- 64. 最小路径和: 中等
- 66. 加一: 简单
- 67. 二进制求和: 简单
- 70. 爬楼梯: 简单
- 72. 编辑距离: 困难
- 75. 颜色分类: 中等
- 76. 最小覆盖子串: 困难
- 77. 组合: 中等
- 78. 子集: 中等
- 79. 单词搜索: 中等
- 84. 柱状图中最大的矩形: 困难
- 85. 最大矩形: 困难
- 88. 合并两个有序数组: 简单
- 93. 复原IP地址: 中等
- 94. 二叉树的中序遍历: 中等
- 95. 不同的二叉搜索树 II: 中等
- 96. 不同的二叉搜索树: 中等
- 97. 交错字符串: 困难
- 98. 验证二叉搜索树: 中等
- 99. 恢复二叉搜索树: 困难
- 100. 相同的树: 简单
- 101. 对称二叉树: 简单
- 104. 二叉树的最大深度: 简单
- 106. 从中序与后序遍历序列构造二叉树: 中等
- 107. 二叉树的层次遍历 II: 简单
- 108. 将有序数组转换为二叉搜索树: 简单
- 109. 有序链表转换二叉搜索树: 中等
- 110. 平衡二叉树: 简单
- 111. 二叉树的最小深度: 简单
- 112. 路径总和: 简单
- 113. 路径总和 II: 中等
- 114. 二叉树展开为链表: 中等
- 116. 填充每个节点的下一个右侧节点指针: 中等
- 117. 填充每个节点的下一个右侧节点指针 II: 中等
- 120. 三角形最小路径和: 中等
- 121. 买卖股票的最佳时机: 简单
- 122. 买卖股票的最佳时机 II: 中等
- 124. 二叉树中的最大路径和: 困难
- 125. 验证回文串: 简单
- 129. 求根到叶子节点数字之和: 中等
- 130. 被围绕的区域: 中等
- 133. 克隆图: 中等
- 134. 加油站: 中等
- 136. 只出现一次的数字: 简单
- 139. 单词拆分: 中等
- 143. 重排链表: 中等
- 144. 二叉树的前序遍历: 中等
- 145. 二叉树的后序遍历: 中等
- 146. LRU缓存机制: 中等
- 153. 寻找旋转排序数组中的最小值: 中等
- 154. 寻找旋转排序数组中的最小值 II: 困难
- 164. 最大间距: 困难
- 167. 两数之和 II - 输入有序数组: 简单
- 174. 地下城游戏: 困难
- 200. 岛屿数量: 中等
- 201. 数字范围按位与: 中等
- 202. 快乐数: 简单
- 203. 移除链表元素: 简单
- 204. 计数质数: 简单
- 206. 反转链表: 简单
- 207. 课程表: 中等
- 209. 长度最小的子数组: 中等
- 211. 添加与搜索单词 - 数据结构设计: 中等
- 214. 最短回文串: 困难
- 215. 数组中的第K个最大元素: 中等
- 216. 组合总和 III: 中等
- 224. 基本计算器: 困难
- 226. 翻转二叉树: 简单
- 232. 用栈实现队列: 简单
- 234. 回文链表: 简单
- 235. 二叉搜索树的最近公共祖先: 简单
- 257. 二叉树的所有路径: 简单
- 283. 移动零: 简单
- 297. 二叉树的序列化与反序列化: 困难
- 300. 最长递增子序列: 中等
- 303. 区域和检索 - 数组不可变: 简单
- 304. 二维区域和检索 - 矩阵不可变: 中等
- 309. 最佳买卖股票时机含冷冻期: 中等
- 312. 戳气球: 困难
- 315. 计算右侧小于当前元素的个数: 困难
- 329. 矩阵中的最长递增路径: 困难
- 332. 重新安排行程: 中等
- 336. 回文对: 困难
- 337. 打家劫舍 III: 中等
- 338. 比特位计数: 中等
- 343. 整数拆分: 中等
- 347. 前 K 个高频元素: 中等
- 349. 两个数组的交集: 简单
- 350. 两个数组的交集 II: 简单
- 354. 俄罗斯套娃信封问题: 困难
- 378. 有序矩阵中第K小的元素: 中等
- 385. 迷你语法分析器: 中等
- 392. 判断子序列: 简单
- 404. 左叶子之和: 简单
- 410. 分割数组的最大值: 困难
- 415. 字符串相加: 简单
- 453. 最小操作次数使数组元素相等: 简单
- 455. 分发饼干: 简单
- 459. 重复的子字符串: 简单(困难)
- 463. 岛屿的周长: 简单
- 476. 数字的补数: 简单
- 486. 预测赢家: 中等
- 491. 递增子序列: 中等(困难)
- 501. 二叉搜索树中的众数: 简单(中等)
- 503. 下一个更大元素 II: 中等
- 529. 扫雷游戏: 中等
- 538. 把二叉搜索树转换为累加树: 简单
- 546. 移除盒子: 困难
- 557. 反转字符串中的单词 III: 简单
- 617. 合并二叉树: 简单
- 632. 最小区间: 困难
- 647. 回文子串: 中等
- 657. 机器人能否返回原点: 简单(极简)
- 679. 24 点游戏: 困难
- 685. 冗余连接 II: 困难
- 696. 计数二进制子串: 简单
- 718. 最长重复子数组: 中等
- 733. 图像渲染: 简单
- 739. 每日温度: 中等
- 763. 划分字母区间: 中等
- 785. 判断二分图: 中等
- 819. 最常见的单词: 简单
- 841. 钥匙和房间: 中等
- 844. 比较含退格的字符串: 简单
- 845. 数组中的最长山脉: 中等
- 867. 转置矩阵: 简单
- 925. 长按键入: 简单
- 941. 有效的山脉数组: 简单
- 968. 监控二叉树: 困难
- 977. 有序数组的平方: 简单
- 1014. 最佳观光组合: 中等
- 1024. 视频拼接: 中等
- 1025. 除数博弈: 简单
- 1028. 从先序遍历还原二叉树: 困难
- 1109. 航班预订统计: 中等
- 1178. 猜字谜: 困难
- 1207. 独一无二的出现次数: 简单
- 1300. 转变数组后最接近目标值的数组和: 中等
- 1365. 有多少小于当前数字的数字: 简单
- 1672. 最富有客户的资产总量: 简单
- 面试题 02.01. 移除重复节点: 简单
- 面试题 08.03. 魔术索引: 简单
- 面试题 16.11. 跳水板: 简单
- 面试题 16.18. 模式匹配: 中等
- 面试题 17.13. 恢复空格: 中等
- 剑指 Offer 09. 用两个栈实现队列: 简单
- 剑指 Offer 11. 旋转数组的最小数字: 简单
- 剑指 Offer 20. 表示数值的字符串: 中等
- 剑指 Offer 46. 把数字翻译成字符串: 中等
- LCP-13. 寻宝: 困难
- combination-sum-2: ?
- combination-sum-3: ?
- combination-sum-4: ?
- longest_substring_without_repeating_characters: ?
- longest_palindromic_substring: ?
- palindrome_number: ?
- integer_to_roman: ?
- roman_to_integer: ?
- three_sum: ?
- 排序
- 二分
- 拓扑排序
- 快排
- 347. 前 K 个高频元素: 中等
- 桶排
- 164. 最大间距: 困难
- 347. 前 K 个高频元素: 中等
- 基数排序
- 164. 最大间距: 困难
- 其它
- 75. 颜色分类: 中等
- 栈
- 22. 括号生成
- 42. 接雨水: 困难
- 84. 柱状图中最大的矩形: 困难
- 85. 最大矩形: 困难
- 224. 基本计算器: 困难
- 232. 用栈实现队列: 简单
- 385. 迷你语法分析器: 中等
- 503. 下一个更大元素 II: 中等
- 递归
- 385. 迷你语法分析器: 中等
- 堆
- 链表
- 24. 两两交换链表中的节点: 中等(简单)
- 143. 重排链表: 中等
- 206. 反转链表: 简单
- 动态规则
- 53. 最大子序和
- 72. 编辑距离: 困难
- 122. 买卖股票的最佳时机 II: 中等
- 300. 最长递增子序列: 中等
- 338. 比特位计数: 中等
- 354. 俄罗斯套娃信封问题: 困难
- 486. 预测赢家: 中等
- 1024. 视频拼接: 中等
- 贪心算法
- 树
- 字典树
- 线段树
- 二叉搜索树
- 树的遍历
- 94. 二叉树的中序遍历: 中等
- Morris 遍历
- 94. 二叉树的中序遍历: 中等
- 144. 二叉树的前序遍历: 中等
- 145. 二叉树的后序遍历: 中等
- 501. 二叉搜索树中的众数: 简单(中等)
- 538. 把二叉搜索树转换为累加树: 简单
- 二叉树
- 101. 对称二叉树: 简单
- 106. 从中序与后序遍历序列构造二叉树: 中等
- 116. 填充每个节点的下一个右侧节点指针: 中等
- 117. 填充每个节点的下一个右侧节点指针 II: 中等
- 144. 二叉树的前序遍历: 中等
- 145. 二叉树的后序遍历: 中等
- 226. 翻转二叉树: 简单
- 404. 左叶子之和: 简单
- 深度/广度优先遍历
- 113. 路径总和 II: 中等
- 129. 求根到叶子节点数字之和: 中等
- 145. 二叉树的后序遍历: 中等
- 617. 合并二叉树: 简单
- 图
- 深度/广度优先遍历
- 200. 岛屿数量: 中等
- 463. 岛屿的周长: 简单
- 841. 钥匙和房间: 中等
- 深度/广度优先遍历
- 并查集
- 200. 岛屿数量: 中等
- 685. 冗余连接 II: 困难
- 回文
- 214. 最短回文串: 困难
- 234. 回文链表: 简单
- 647. 回文子串
- 状态机
- 脑筋急转弯
- 快慢指针
- 202. 快乐数: 简单
- 回溯
- 51. N 皇后: 困难
- 位运算
- 37. 解数独: 困难
- 50. Pow(x, n): 中等
- 51. N 皇后: 困难
- 77. 组合: 中等
- 78. 子集: 中等
- 338. 比特位计数: 中等
- 476. 数字的补数: 简单
- 1178. 猜字谜: 困难
- 排列组合
- 40. 组合总和 II: 中等
- 77. 组合: 中等
- 216. 组合总和 III: 中等
- 46. 全排列: 中等
- 47. 全排列 II: 中等
- 78. 子集: 中等
- 双指针
- 19. 删除链表的倒数第N个节点: 中等
- 42. 接雨水: 困难
- 977. 有序数组的平方: 简单
- 前缀和
- 动态规划。
- 正着和倒着。
- 状态转移方程很重要!
- 双指针。
- 滑动窗口。
- 堆。
- 用堆解决 topN 的问题。
- 二分。
- 二分时如果出现
left = mid或者right = mid时就要小心了,可能会出现死循环。 - 计算 mid 时如果用
mid = (left + right)/2,那么left + right可能会溢出,所以题解中都是用mid = left + (right - left) / 2. 其中的区间是[left, right]。
- 二分时如果出现
- 分治:(什么是分治:分治法是将整个数组切分成几个小组,然后每个小组再切分成几个更小的小组,一直到不能继续切分也就是只剩一个数字为止。每个小组会计算出最优值,汇报给上一级的小组,一级一级汇报,上级拿到下级的汇报找到最大值,得到最终的结果。和归并排序的算法类似,先切分,再合并结果。)
递推式
比如说 「109. 有序链表转换二叉搜索树」,长度为 n 的链表,寻找中位数用时
递推式