CodingInterview
此项目建议搭配Code tree for GitHub效果更佳。
环境说明: Java8
LeetCode
1.按题目顺序
| 题号 | 相关话题 | 题目 | 难度 | 
| 001 | 数组、哈希表 | 两数之和 | 简单 | 
| 002 | 链表、数学 | 两数相加 | 中等 | 
| 003 | 字符串、哈希表、双指针 | 无重复字符的最长子串 | 中等 | 
| 005 | 字符串、动态规划 | 最长回文子串 | 中等 | 
| 011 | 数组、双指针 | 盛最多水的容器 | 中等 | 
| 015 | 数组、双指针 | 三数之和 | 中等 | 
| 016 | 数组、双指针 | 最接近的三数之和 | 中等 | 
| 017 | 字符串、回溯算法 | 电话号码的字母组合 | 中等 | 
| 018 | 数组、哈希表、双指针 | 四数之和 | 中等 | 
| 019 | 链表、双指针 | 删除链表的倒数第N个节点 | 中等 | 
| 022 | 字符串、回溯算法 | 括号生成 | 中等 | 
| 026 | 数组、双指针 | 删除排序数组中的重复项 | 简单 | 
| 027 | 数组、双指针 | 移除元素 | 简单 | 
| 028 | 字符串、双指针 | 实现strStr() | 简单 | 
| 039 | 数组、回溯算法 | 组合总和 | 中等 | 
| 040 | 数组、回溯算法 | 组合总和 II | 中等 | 
| 046 | 回溯算法 | 全排列 | 中等 | 
| 047 | 回溯算法 | 全排列II | 中等 | 
| 051 | 回溯算法 | N皇后 | 困难 | 
| 052 | 回溯算法 | N皇后 II | 困难 | 
| 053 | 数组、分治算法、动态规划 | 最大子序和 | 中等 | 
| 055 | 贪心算法、数组 | 跳跃游戏 | 中等 | 
| 056 | 排序、数组 | 合并区间 | 中等 | 
| 057 | 排序、数组 | 插入区间 | 困难 | 
| 060 | 数学、回溯算法 | 第k个排列 | 中等 | 
| 061 | 链表、双指针 | 旋转链表 | 中等 | 
| 062 | 数组、动态规划 | 不同路径 | 中等 | 
| 063 | 数组、动态规划 | 不同路径 II | 中等 | 
| 064 | 数组、动态规划 | 最小路径和 | 中等 | 
| 070 | 动态规划 | 爬楼梯 | 简单 | 
| 072 | 字符串、动态规划 | 编辑距离 | 困难 | 
| 075 | 排序、数组、双指针 | 颜色分类 | 中等 | 
| 077 | 回溯算法 | 组合 | 中等 | 
| 078 | 位运算、数组、回溯算法 | 子集 | 中等 | 
| 079 | 数组、回溯算法 | 单词搜索 | 中等 | 
| 080 | 数组、双指针 | 删除排序数组中的重复项 II | 中等 | 
| 086 | 链表、双指针 | 分隔链表 | 中等 | 
| 088 | 数组、双指针 | 合并两个有序数组 | 简单 | 
| 089 | 回溯算法 | 格雷编码 | 中等 | 
| 090 | 数组、回溯算法 | 子集II | 中等 | 
| 091 | 字符串、动态规划 | 解码方法 | 中等 | 
| 093 | 字符串、回溯算法 | 复原IP地址 | 中等 | 
| 094 | 栈、树、哈希表 | 二叉树的中序遍历 | 中等 | 
| 095 | 树、动态规划 | 不同的二叉搜索树 II | 中等 | 
| 096 | 树、动态规划 | 不同的二叉搜索树 | 中等 | 
| 098 | 树、深度优先搜索 | 验证二叉搜索树 | 中等 | 
| 100 | 树、深度优先搜索 | 相同的树 | 简单 | 
| 101 | 树、深度优先搜索、广度优先搜索 | 对称二叉树 | 简单 | 
| 102 | 树、广度优先搜索 | 二叉树的层次遍历 | 中等 | 
| 103 | 栈、树、广度优先搜索 | 二叉树的锯齿形层次遍历 | 中等 | 
| 104 | 树、深度优先搜索 | 二叉树的深度 | 简单 | 
| 105 | 树、深度优先搜索 | 从前序与中序遍历序列构造二叉树 | 中等 | 
| 106 | 树、深度优先搜索 | 从中序与后序遍历序列构造二叉树 | 中等 | 
| 107 | 树、广度优先搜索 | 二叉树的层次遍历 II | 简单 | 
| 108 | 树、深度优先搜索 | 将有序数组转换为二叉搜索树 | 简单 | 
| 110 | 树、深度优先搜索 | 平衡二叉树 | 简单 | 
| 111 | 树、广度优先搜索、深度优先搜索 | 二叉树的最小深度 | 简单 | 
| 112 | 树、深度优先搜索 | 路径总和 | 简单 | 
| 113 | 树、深度优先搜索 | 路径总和 II | 中等 | 
| 114 | 树、深度优先搜索 | 二叉树展开为链表 | 中等 | 
| 120 | 数组、动态规划 | 三角形最小路径和 | 中等 | 
| 121 | 数组、动态规划 | 买卖股票的最佳时机 | 简单 | 
| 122 | 贪心算法、数组 | 买卖股票的最佳时机 II | 简单 | 
| 123 | 动态规划、数组 | 买卖股票的最佳时机 III | 困难 | 
| 125 | 字符串、双指针 | 验证回文串 | 简单 | 
| 129 | 树、深度优先搜索 | 求根到叶子节点数字之和 | 中等 | 
| 130 | 深度优先搜索、广度优先搜索、并查集 | 被围绕的区域 | 中等 | 
| 131 | 回溯算法 | 分割回文串 | 中等 | 
| 134 | 贪心算法 | 加油站 | 中等 | 
| 136 | 位运算、哈希表 | 只出现一次的数字 | 简单 | 
| 137 | 位运算 | 只出现一次的数字 II | 中等 | 
| 139 | 动态规划 | 单词拆分 | 中等 | 
| 141 | 链表、双指针 | 环形链表 | 简单 | 
| 142 | 链表、双指针 | 环形链表 II | 中等 | 
| 144 | 栈、树 | 二叉树的前序遍历 | 中等 | 
| 145 | 栈、树 | 二叉树的后序遍历 | 困难 | 
| 147 | 排序、链表 | 对链表进行插入排序 | 中等 | 
| 148 | 排序、链表 | 排序链表 | 中等 | 
| 152 | 数组、动态规划 | 乘积最大子序列 | 中等 | 
| 167 | 数组、双指针、二分查找 | 两数之和 II - 输入有序数组 | 简单 | 
| 179 | 排序 | 最大数 | 中等 | 
| 198 | 动态规划 | 打家劫舍 | 简单 | 
| 199 | 树、深度优先搜索、广度优先搜索 | 二叉树的右视图 | 中等 | 
| 200 | 深度优先搜索、广度优先搜索、并查集 | 岛屿的个数 | 中等 | 
| 206 | 链表 | 反转链表 | 简单 | 
| 207 | 深度优先搜索、广度优先搜索、图、拓扑排序 | 课程表 | 中等 | 
| 209 | 数组、双指针、二分查找 | 长度最小的子数组 | 中等 | 
| 210 | 深度优先搜索、广度优先搜索、图、拓扑排序 | 课程表 II | 中等 | 
| 211 | 设计、字典数、回溯算法 | 添加与搜索单词 - 数据结构设计 | 中等 | 
| 212 | 字典数、回溯算法 | 单词搜索 II | 困难 | 
| 213 | 动态规划 | 打家劫舍 II | 中等 | 
| 216 | 数组、回溯算法 | 组合总和 III | 中等 | 
| 220 | 二叉搜索树 | 存在重复元素 III | 中等 | 
| 221 | 动态规划 | 最大正方形 | 中等 | 
| 226 | 树 | 翻转二叉树 | 简单 | 
| 234 | 链表、双指针 | 回文链表 | 简单 | 
| 235 | 树 | 二叉搜索树的最近公共祖先 | 简单 | 
| 236 | 树 | 二叉树的最近公共祖先 | 中等 | 
| 242 | 排序、哈希表 | 有效的字母异位词 | 简单 | 
| 260 | 位运算 | 只出现一次的数字 III | 中等 | 
| 264 | 堆、数学、动态规划 | 丑数 II | 中等 | 
| 274 | 排序、哈希表 | H指数 | 中等 | 
| 279 | 广度优先搜索、数学、动态规划 | 完全平方数 | 中等 | 
| 283 | 数组、双指针 | 移动零 | 简单 | 
| 287 | 数组、双指针、二分查找 | 寻找重复数 | 中等 | 
| 300 | 二分查找、动态规划 | 最长上升子序列 | 中等 | 
| 303 | 动态规划 | 区域和检索 - 数组不可变 | 简单 | 
| 304 | 动态规划 | 二维区域和检索 - 矩阵不可变 | 中等 | 
| 306 | 回溯算法 | 累加数 | 中等 | 
| 309 | 回溯算法 | 最佳买卖股票时机含冷冻期 | 中等 | 
| 322 | 动态规划 | 零钱兑换 | 中等 | 
| 324 | 排序 | 摆动排序 II | 中等 | 
| 337 | 树、深度优先搜索 | 打家劫舍 III | 中等 | 
| 338 | 位运算、动态规划 | 比特位计数 | 中等 | 
| 343 | 数学、动态规划 | 整数拆分 | 中等 | 
| 344 | 字符串、双指针 | 反转字符串 | 简单 | 
| 345 | 字符串、双指针 | 反转字符串中的元音字母 | 简单 | 
| 349 | 排序、哈希表、双指针、二分查找 | 两个数组的交集 | 简单 | 
| 350 | 排序、哈希表、双指针、二分查找 | 两个数组的交集 II | 简单 | 
| 357 | 数学、动态规划、回溯算法 | 计算各个位数不同的数字个数 | 中等 | 
| 368 | 数学、动态规划 | 最大整除子集 | 中等 | 
| 375 | 极小化极大、动态规划 | 猜数字大小 II | 中等 | 
| 376 | 动态规划、贪心算法 | 摆动序列 | 中等 | 
| 377 | 动态规划 | 组合总和 Ⅳ | 中等 | 
| 392 | 动态规划、贪心算法、二分查找 | 判断子序列 | 中等 | 
| 394 | 栈、深度优先搜索 | 字符串解码 | 中等 | 
| 402 | 栈、贪心算法 | 移掉K位数字 | 中等 | 
| 404 | 树 | 左叶子之和 | 简单 | 
| 406 | 贪心算法 | 根据身高重建队列 | 中等 | 
| 413 | 数学、动态规划 | 等差数列划分 | 中等 | 
| 416 | 动态规划 | 分割等和子集 | 中等 | 
| 417 | 深度优先搜索、广度优先搜索 | 太平洋大西洋水流问题 | 中等 | 
| 435 | 贪心算法 | 无重叠区间 | 中等 | 
| 452 | 贪心算法 | 用最少数量的箭引爆气球 | 中等 | 
| 455 | 贪心算法 | 分发饼干 | 简单 | 
| 467 | 动态规划 | 环绕字符串中唯一的子字符串 | 中等 | 
| 491 | 深度优先搜索 | 递增子序列 | 中等 | 
| 513 | 树、深度优先搜索、广度优先搜索 | 找树左下角的值 | 中等 | 
| 516 | 动态规划 | 最长回文子序列 | 中等 | 
| 524 | 排序、双指针 | 通过删除字母匹配到字典里最长单词 | 中等 | 
| 526 | 回溯算法 | 优美的排列 | 中等 | 
| 530 | 二叉搜索树 | 二叉搜索树的最小绝对差 | 简单 | 
| 532 | 排序、双指针 | 数组中的K-diff数对 | 简单 | 
| 547 | 深度优先搜索、并查集 | 朋友圈 | 中等 | 
| 559 | 树、深度优先搜索、广度优先搜索 | N叉树的最大深度 | 简单 | 
| 567 | 双指针 | 字符串的排列 | 中等 | 
| 621 | 贪心算法、队列、数组 | 任务调度器 | 中等 | 
| 649 | 贪心算法 | Dota2 参议院 | 中等 | 
| 659 | 堆、贪心算法 | 分割数组为连续子序列 | 中等 | 
| 690 | 深度优先搜索、广度优先搜索、哈希表 | 员工的重要性 | 简单 | 
| 695 | 深度优先搜索、数组 | 岛屿的最大面积 | 中等 | 
| 713 | 数组、双指针 | 乘积小于K的子数组 | 中等 | 
| 714 | 数组、数组、动态规划 | 买卖股票的最佳时机含手续费 | 中等 | 
| 738 | 贪心算法 | 单调递增的数字 | 中等 | 
| 763 | 贪心算法、双指针 | 划分字母区间 | 中等 | 
| 767 | 堆、贪心算法、排序、字符串 | 重构字符串 | 中等 | 
| 784 | 位运算、回溯算法 | 字母大小写全排列 | 简单 | 
| 783 | 二叉搜索树 | 二叉搜索树结点最小距离 | 简单 | 
| 826 | 双指针 | 安排工作以达到最大收益 | 中等 | 
| 838 | 双指针 | 推多米诺 | 中等 | 
| 841 | 双指针 | 字符的最短距离 | 简单 | 
| 842 | 贪心算法、字符串、回溯算法 | 将数组拆分成斐波那契序列 | 中等 | 
| 844 | 双指针 | 比较含退格的字符串 | 简单 | 
| 845 | 双指针 | 数组中的最长山脉 | 中等 | 
| 859 | 字符串 | 亲密字符串 | 中等 | 
| 860 | 贪心算法 | 柠檬水找零 | 简单 | 
| 861 | 贪心算法 | 翻转矩阵后的得分 | 中等 | 
| 874 | 贪心算法 | 模拟行走机器人 | 简单 | 
| 870 | 贪心算法、数组 | 优势洗牌 | 中等 | 
| 881 | 双指针 | 救生艇 | 中等 | 
| 904 | 双指针 | 水果成篮 | 中等 | 
| 908 | 数学 | 最小差值 I | 简单 | 
| 910 | 数学 | 最小差值 II | 中等 | 
| 921 | 栈、贪心算法 | 使括号有效的最少添加 | 中等 | 
| 922 | 排序、数组 | 按奇偶排序数组 II | 简单 | 
| 923 | 双指针 | 三数之和的多种可能 | 中等 | 
| 925 | 双指针、字符串 | 长按键入 | 简单 | 
| 930 | 双指针、哈希表 | 和相同的二元子数组 | 中等 | 
| 938 | 二叉搜索树 | 二叉搜索树的范围和 | 中等 | 
| 944 | 贪心算法 | 删列造序 | 简单 | 
| 948 | 贪心算法 | 令牌放置 | 中等 | 
| 955 | 贪心算法 | 删列造序 II | 中等 | 
| 969 | 排序、数组 | 煎饼排序 | 中等 | 
| 973 | 排序、数学、分治算法 | 最接近原点的 K 个点 | 简单 | 
| 984 | 贪心算法 | 不含 AAA 或 BBB 的字符串 | 简单 | 
2.分类专题
二分搜索
| 题号 | 题目 | 难度 | 
| 034 | 在排序数组中查找元素的第一个和最后一个位置 | 中等 | 
| 069 | x 的平方根 | 简单 | 
| 153 | 寻找旋转排序数组中的最小值 | 中等 | 
| 278 | 第一个错误的版本 | 简单 | 
| 540 | 有序数组中的单一元素 | 中等 | 
| 744 | 寻找比目标字母大的最小字母 | 简单 | 
分治
| 题号 | 题目 | 难度 | 
| 241 | 在排序数组中查找元素的第一个和最后一个位置 | 中等 | 
广度优先搜索
| 题号 | 题目 | 难度 | 
| 127 | 单词接龙 | 中等 | 
| 279 | 完全平方数 | 中等 | 
深度优先搜索
| 题号 | 题目 | 难度 | 
| 130 | 被围绕的区域 | 中等 | 
| 200 | 岛屿的个数 | 中等 | 
| 417 | 太平洋大西洋水流问题 | 中等 | 
| 547 | 朋友圈 | 中等 | 
| 695 | 岛屿的最大面积 | 简单 | 
回溯算法
| 题号 | 题目 | 难度 | 
| 017 | 电话号码的字母组合 | 中等 | 
| 022 | 括号生成 | 中等 | 
| 037 | 解数独 | 中等 | 
| 039 | 组合总和 | 中等 | 
| 040 | 组合总和2 | 中等 | 
| 046 | 全排列 | 中等 | 
| 047 | 全排列2 | 中等 | 
| 051 | N皇后问题 | 中等 | 
| 052 | N皇后问题2 | 中等 | 
| 060 | 第k个排列 | 中等 | 
| 077 | 组合 | 中等 | 
| 078 | 子集 | 中等 | 
| 079 | 单词搜索 | 中等 | 
| 089 | 格雷编码 | 中等 | 
| 090 | 子集2 | 中等 | 
| 093 | 复原IP地址 | 中等 | 
| 131 | 分割回文串 | 中等 | 
| 212 | 单词搜索2 | 困难 | 
| 216 | 组合总和3 | 困难 | 
| 257 | 二叉树的所有路径 | 困难 | 
| 306 | 累加数 | 困难 | 
贪心算法
| 题号 | 题目 | 难度 | 
| 122 | 买卖股票的最佳时机 II | 简单 | 
| 392 | 判断子序列 | 简单 | 
| 406 | 据身高重建队列 | 简单 | 
| 435 | 无重叠区间 | 简单 | 
| 452 | 用最少数量的箭引爆气球 | 简单 | 
| 455 | 分配饼干 | 简单 | 
| 605 | 种花问题 | 简单 | 
| 665 | 非递减数列 | 简单 | 
| 763 | 划分字母区间 | 简单 | 
动态规划
斐波那契数列
| 题号 | 题目 | 难度 | 
| 053 | 最大子序和 | 简单 | 
| 070 | 爬楼梯 | 简单 | 
| 198 | 打家劫舍 | 简单 | 
| 213 | 打家劫舍2 | 中等 | 
矩阵路径
| 题号 | 题目 | 难度 | 
| 062 | 不同路径 | 中等 | 
| 064 | 最小路径和 | 中等 | 
数组区间
| 题号 | 题目 | 难度 | 
| 053 | 子数组最大的和 | 简单 | 
| 303 | 数组区间和 | 简单 | 
| 413 | 等差数列划分 | 中等 | 
分割整数
| 题号 | 题目 | 难度 | 
| 091 | 解码方法 | 中等 | 
| 279 | 完全平方数 | 中等 | 
| 343 | 整数拆分 | 中等 | 
最长递增子序列
| 题号 | 题目 | 难度 | 
| 300 | 最长递增子序列 | 中等 | 
| 376 | 最长摆动子序列 | 中等 | 
| 646 | 一组整数对能够构成的最长链 | 中等 | 
0-1背包问题
| 题号 | 题目 | 难度 | 
| 139 | 单词拆分 | 中等 | 
| 322 | 零钱兑换 | 中等 | 
| 377 | 组合总和 Ⅳ | 中等 | 
| 416 | 分割等和子集 | 中等 | 
| 474 | 一和零 | 中等 | 
| 494 | 目标和 | 中等 | 
字符串编辑
| 题号 | 题目 | 难度 | 
| 072 | 编辑距离 | 中等 | 
| 583 | 两个字符串的删除操作 | 中等 | 
| 650 | 只有两个键的键盘 | 中等 | 
数组
树
| 题号 | 题目 | 难度 | 
| 235 | 二叉搜索树的最近公共祖先 | 简单 | 
| 236 | 二叉树的最近公共祖先 | 中等 | 
字典树
| 题号 | 题目 | 难度 | 
| 208 | 实现 Trie (前缀树) | 中等 | 
链表
| 题号 | 题目 | 难度 | 
| 206 | 反转链表 | 简单 | 
| 234 | 回文链表 | 中等 | 
算法笔记
| 类型 | 题目 | 
| 栈 | 双栈算术表达式求值 | 
| 字符串 | 将字符串转换为数字 | 
| 字符串 | kmp算法实现 | 
| LRU算法 | LRU算法 | 
| 排序 | 常见排序算法 | 
| TOP-K问题 | TOP-K问题 | 
| 背包问题 | 01背包 | 
| 背包问题 | 完全背包 | 
| 背包问题 | 多重背包 | 
| 背包问题 | 背包模板 | 
| 二叉树 | 二叉树的递归与非递归遍历 | 
| 红黑树 | 红黑树 | 
| 动态规划 | 最长公共子序列 | 
读书笔记
| 类型 | 链接 | 推荐指数 | 
| 编程之法 | 编程之法 | ⭐️⭐️ | 
| 算法(第四版) | 算法(第四版) | ⭐️⭐️⭐️⭐️ | 
| 剑指offer(第二版) | 剑指offer(第二版) | ⭐️⭐️⭐️⭐️⭐️ |