目录
二分法
Medium | LeetCode 300. 最长递增子序列 | 动态规划 | 贪心 + 二分法
Medium | LeetCode 287. 寻找重复数 | 二分法 | Floyd判圈法(环形链表)
Easy | LeetCode 14. 最长公共前缀 | 二分法
Easy | LeetCode 278. 第一个错误的版本 | 二分法
Medium | LeetCode 162. 寻找峰值 | 二分法
Medium | LeetCode 33. 搜索旋转排序数组 | 二分法
Easy | 剑指 Offer 53 - II. 0~n-1中缺失的数字 | 二分法
Easy | LeetCode 154 | 剑指 Offer 11. 旋转数组的最小数字 | 二分法
Medium | LeetCode 34 | 剑指 Offer 53 - I. 在排序数组中查找数字 I | 二分法
双指针
Easy | 剑指 Offer 57. 和为s的两个数字(有序数组) | 双指针
Easy | 剑指 Offer 57 - II. 和为s的连续正数序列 | 双指针 | 数学
Easy | LeetCode 27. 移除元素 | 快慢指针
Easy | LeetCode 350. 两个数组的交集 II | 哈希 | 排序+双指针
Easy | LeetCode 283. 移动零 | 双指针
Medium | LeetCode 125. 验证回文串 | 双指针
Easy | LeetCode 26. 删除排序数组中的重复项 | 双指针
Medium | LeetCode 11. 盛最多水的容器 | 双指针
Medium | LeetCode 15. 三数之和 | 双指针法
Easy | LeetCode 1. 两数之和 | 排序+双指针 | HaspMap
Easy | 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 | 快排(双指针)
哈希
Easy | LeetCode 217. 存在重复元素 | 排序 | 哈希
Easy | LeetCode 387. 字符串中的第一个唯一字符 | 哈希 | 哈希+队列
Easy | 剑指 Offer 50. 第一个只出现一次的字符
Easy | LeetCode 350. 两个数组的交集 II | 哈希 | 排序+双指针
Medium | LeetCode 454. 四数相加 II | 两组循环 + 哈希
Hard | LeetCode 41. 缺失的第一个正数 | 原地Hash
Medium | LeetCode 448. 找到所有数组中消失的数字 | 原地Hash
Medium | LeetCode 73. 矩阵置零 | 原地标记
Medium | LeetCode 289. 生命游戏 | 原地标记
排序
Medium | 剑指 Offer 45. 把数组排成最小的数
Hard | LeetCode 295 | 剑指 Offer 41. 数据流中的中位数 | 优先队列(堆排序)
Easy | 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 | 快排(双指针)
Easy | LeetCode 217. 存在重复元素 | 排序 | 哈希
Medium | LeetCode 581. 最短无序连续子数组 | 排序 | 单调栈 | 局部单调性
Easy| LeetCode 56. 合并区间 | 排序
Medium | LeetCode 179. 最大数 | 排序
Easy | LeetCode 1. 两数之和 | 排序+双指针 | HaspMap
归并排序
Easy | LeetCode 88. 合并两个有序数组 | 归并排序
Hard | 剑指 Offer 51. 数组中的逆序对 | 归并排序
快速排序
Easy | 剑指 Offer 40. 最小的k个数 | 快排
Medium | LeetCode 347. 前 K 个高频元素 | 快速排序
Medium | LeetCode 215. 数组中的第K个最大元素 | 快速排序
三路排序
Medium | LeetCode 324. 摆动排序 II | Top-K大数 + 三路排序
Easy | LeetCode 75. 颜色分类 | 快速排序
数组
Medium | LeetCode 189. 旋转数组 | 数组反转
Easy | LeetCode 169 | 剑指 Offer 39. 数组中出现次数超过一半的数字 多数投票算法(Boyer-Moore Algorithm)
Easy | 剑指 Offer 03. 数组中重复的数字
Easy | 剑指 Offer 61. 扑克牌中的顺子
Easy | LeetCode 13. 罗马数字转整数
Hard | LeetCode 128. 最长连续序列
Medium | LeetCode 31. 下一个排列
矩阵
Easy | LeetCode 240 | 剑指 Offer 04. 二维数组中的查找
Medium | LeetCode 48. 旋转图像 | 矩阵旋转
Easy | LeetCode 36. 有效的数独
字符串
Easy | 剑指 Offer 05. 替换空格
Easy | LeetCode 344. 反转字符串 | 双指针
Easy | LeetCode 151 | 剑指 Offer 58 - I. 翻转单词顺序
Easy | LeetCode 242. 有效的字母异位词 | 字符串(异位词)
Medium | LeetCode 49. 字母异位词分组 | 字符串(异位词)
Medium | LeetCode 8 | 剑指 Offer 67. 把字符串转换成整数
Medium | LeetCode 3 | 剑指 Offer 48. 最长不含重复字符的子字符串
栈与队列
Easy | LeetCode 155 | 剑指 Offer 30. 包含min函数的栈 | 设计
Easy | 剑指 Offer 09. 用两个栈实现队列 | 设计
Easy | LeetCode 7. 整数反转 | 栈
Easy | LeetCode 20. 有效的括号 | 栈
Medium | LeetCode 150. 逆波兰表达式求值 | 栈
Medium | LeetCode 946 | 剑指 Offer 31. 栈的压入、弹出序列
链表
Medium | LeetCode 146. LRU 缓存机制 | HashMap+双向链表 | LinkedHasp
Medium | LeetCode 426 | 剑指 Offer 36. 二叉搜索树与双向链表 | 中序遍历(递归)
Medium | LeetCode 2. 两数相加 | 链表
Medium | LeetCode 328. 奇偶链表
Easy | 剑指 Offer 06. 从尾到头打印链表
Easy | LeetCode 237. 删除链表中的节点
Easy | 剑指 Offer 18. 删除链表的节点
Medium | LeetCode 114. 二叉树展开为链表
Medium | 剑指 Offer 35. 复杂链表的复制
环形链表
Easy | LeetCode 141. 环形链表
Medium | LeetCode 142. 环形链表 II
Medium | LeetCode 287. 寻找重复数 | 二分法 | Floyd判圈法(环形链表)
Easy | 剑指 Offer 03. 数组中重复的数字
链表双指针
Easy | LeetCode 160 | 剑指 Offer 52. 两个链表的第一个公共节点
Easy | 剑指 Offer 22. 链表中倒数第k个节点
Medium | LeetCode 19. 删除链表的倒数第N个节点
Easy | 剑指 Offer 25. 合并两个排序的链表
Hard | LeetCode 23. 合并K个升序链表 | 分治 | 优先队列
反转链表
Easy | LeetCode 206 | 剑指 Offer 24. 反转链表
Medium | LeetCode 234. 回文链表
二叉树
Easy | LeetCode 617. 合并二叉树
Medium | LeetCode 105 | 剑指 Offer 07. 从前序与中序遍历序列构造二叉树
Easy | LeetCode 226 | 剑指 Offer 27. 二叉树的镜像
Easy | LeetCode 101 | 剑指 Offer 28. 对称的二叉树
Medium | LeetCode 208. 实现 Trie (前缀树) | 设计
Medium | LeetCode 114. 二叉树展开为链表
二叉树递归
Easy | LeetCode 104 | 剑指 Offer 55 - I. 二叉树的深度
Easy | LeetCode 543. 二叉树的直径
Hard | LeetCode 124. 二叉树中的最大路径和
Easy | LeetCode 110 | 剑指 Offer 55 - II. 平衡二叉树
Medium | 剑指 Offer 26. 树的子结构 | 递归
Medium | LeetCode 113 | 剑指 Offer 34. 二叉树中和为某一值的路径 | 回溯
Medium | LeetCode 437. 路径总和 III | 树 + 回溯 + 前缀和
Medium | LeetCode 337. 打家劫舍 III | 树后序遍历 + 动态规划
二叉树中序遍历
Medium | LeetCode 94. 二叉树的中序遍历
二叉排序树
Easy | 剑指 Offer 54. 二叉搜索树的第k大节点
Medium | LeetCode 230. 二叉搜索树中第K小的元素
Medium | LeetCode 426 | 剑指 Offer 36. 二叉搜索树与双向链表 | 中序遍历(递归)
Medium | LeetCode 538,1038. 把二叉搜索树转换为累加树
Easy | LeetCode 108. 将有序数组转换为二叉搜索树
Medium | LeetCode 98. 验证二叉搜索树
Medium | 剑指 Offer 33. 二叉搜索树的后序遍历序列 | 递归 | 单调栈
Medium | LeetCode 96. 不同的二叉搜索树 | 动态规划 | 数学
层次遍历
Medium | 剑指 Offer 32 - I. 从上到下打印二叉树
Easy | LeetCode 102 | 剑指 Offer 32 - II. 从上到下打印二叉树 II | 二叉树层次遍历
Medium | LeetCode 103 | 剑指 Offer 32 - III. 从上到下打印二叉树 III | 二叉树层次遍历
Hard | LeetCode 297 | 剑指 Offer 37. 序列化二叉树 | 层次遍历二叉树
最近祖先
Easy | LeetCode 235 | 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
Easy | LeetCode 236 | 剑指 Offer 68 - II. 二叉树的最近公共祖先
图
Hard | LeetCode 127. 单词接龙 | 图 + 广度优先遍历
动态规划
Easy | LeetCode 53 | 剑指 Offer 42. 连续子数组的最大和 | 动态规划
Medium | LeetCode 279. 完全平方数 | 动态规划 | BFS
Medium | LeetCode 96. 不同的二叉搜索树 | 动态规划 | 数学
Medium | LeetCode 338. 比特位计数 | 动态规划 + 位运算
Medium | LeetCode 152. 乘积最大子数组 | 动态规划
Medium | LeetCode 64. 最小路径和 | 动态规划
Medium | LeetCode 494. 目标和 | 动态规划
Medium | LeetCode 221. 最大正方形 | 动态规划
Medium | 剑指 Offer 60. n个骰子的点数 | 动态规划
Medium | LeetCode 343 | 剑指 Offer 14- I. 剪绳子 | 动态规划
Medium | LeetCode 264 | 剑指 Offer 49. 丑数 | 动态规划
Medium | LeetCode 62. 不同路径 | 数学组合数 | 动态规划
LeetCode 309. 最佳买卖股票时机含冷冻期 | 动态规划(状态机)
Medium | LeetCode 300. 最长递增子序列 | 动态规划 | 贪心 + 二分法
Medium | LeetCode 139. 单词拆分 | 动态规划
Hard | LeetCode 10 | 剑指 Offer19. 正则表达式匹配 | 递归 | 动态规划
斐波拉契数列问题
Easy | 剑指 Offer 10-I. 斐波那契数列 | 动态规划 + 大数
Easy | LeetCode 70 | 剑指 Offer 10- II. 青蛙跳台阶问题 | 动态规划 + 大数
前缀和问题
Medium | LeetCode 560. 和为K的连续子数组 | 前缀和
Medium | LeetCode 238 | 剑指 Offer 66. 构建乘积数组 | 动态规划
背包问题
Medium | LeetCode 198. 打家劫舍 | 动态规划
Medium | LeetCode 337. 打家劫舍 III | 树后序遍历 + 动态规划
Medium | LeetCode 322. 零钱兑换 | 动态规划 (递归 | 迭代)
Medium | LeetCode 416. 分割等和子集 | 0-1背包问题
回文串问题
Medium | LeetCode 647. 回文子串 | 动态规划 | 中心拓展法
Medium | LeetCode 5. 最长回文子串 | 动态规划 | 中心拓展法
二维矩阵
Medium | 剑指 Offer 47. 礼物的最大价值 | 动态规划
贪心
Medium | LeetCode 334. 递增的三元子序列 | 贪心
Medium | LeetCode 55. 跳跃游戏 | 贪心
Easy | LeetCode 122. 买卖股票的最佳时机 II | 贪心
Medium | LeetCode 300. 最长递增子序列 | 动态规划 | 贪心 + 二分法
回溯
Medium | LeetCode 46. 全排列 | 回溯
Medium | 剑指 Offer 38. 字符串的排列 | 回溯
Medium | LeetCode 78. 子集 | 回溯
Medium | LeetCode 17. 电话号码的字母组合 | 回溯
Medium | LeetCode 39. 组合总和 | 回溯
Medium | LeetCode 22. 括号生成 | 回溯
Medium | 剑指 Offer 46. 把数字翻译成字符串 | 回溯
Medium | LeetCode 113 | 剑指 Offer 34. 二叉树中和为某一值的路径 | 回溯
Medium | LeetCode 79 | 剑指 Offer 12. 矩阵中的路径 | 回溯(矩阵 + DFS)
Medium | LeetCode 437. 路径总和 III | 树 + 回溯 + 前缀和
单调栈、单调队列
Hard | LeetCode 239 | 剑指 Offer 59 - I. 滑动窗口的最大值 | 单调队列
Medium | 剑指 Offer 59 - II. 队列的最大值 | 设计
Medium | LeetCode 739. 每日温度 | 单调栈
Medium | 剑指 Offer 33. 二叉搜索树的后序遍历序列 | 递归 | 单调栈
Medium | LeetCode 581. 最短无序连续子数组 | 排序 | 单调栈 | 局部单调性
滑动窗口
Hard | LeetCode 239 | 剑指 Offer 59 - I. 滑动窗口的最大值 | 单调队列
Medium | LeetCode 438. 找到字符串中所有字母异位词 | 滑动窗口
搜索
Medium | LeetCode 54 | 剑指 Offer 29. 顺时针打印矩阵 | 矩阵 + DFS
Medium | LeetCode 200. 岛屿数量 | 矩阵 + DFS
Medium | 剑指 Offer 13. 机器人的运动范围 | 矩阵 + DFS递归遍历
递归
Medium | LeetCode 50 | 剑指 Offer 16. 数值的整数次方 | 递归 | 快速幂
位运算
Easy | LeetCode 191 | 剑指 Offer 15. 二进制中1的个数 | 位运算
Easy | LeetCode 461. 汉明距离 | 位运算
Easy | LeetCode 371 | 剑指 Offer 65. 不用加减乘除做加法 | 位运算
Easy | LeetCode 190. 颠倒二进制位 | 位运算
Medium | 剑指 Offer 64. 求1+2+…+n | 位运算
Easy | LeetCode 268. 丢失的数字 | 位运算
Medium | 剑指 Offer 56 - I. 数组中数字出现的次数 | 位运算
Medium | 剑指 Offer 56 - II. 数组中数字出现的次数 II | 位运算
Easy | LeetCode 136. 只出现一次的数字 | 位运算
Medium | LeetCode 338. 比特位计数 | 动态规划 + 位运算
数学
Hard | 剑指 Offer 43. 1~n 整数中 1 出现的次数
Easy | 剑指 Offer 17. 打印从1到最大的n位数 | 大数
Medium | LeetCode 400 | 剑指 Offer 44. 数字序列中某一位的数字
Medium | LeetCode 343 | 剑指 Offer 14- II. 剪绳子 II | 大数
模拟
Easy | 剑指 Offer 62. 圆圈中最后剩下的数字
Easy | LeetCode 38. 外观数列 | 模拟
Easy | LeetCode 118. 杨辉三角
Easy | LeetCode 66. 加一 | 模拟
设计
Medium | LeetCode 146. LRU 缓存机制 | HashMap+双向链表 | LinkedHasp
Medium | 剑指 Offer 59 - II. 队列的最大值 | 设计
Easy | LeetCode 28. 实现 strStr() | 设计实现