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(第二版) | 
⭐️⭐️⭐️⭐️⭐️ |