记录LeetCode、牛客网、部分OJ上各种算法题的解法,尽可能的对每道题实现多种解法,展现在过程中解题思路。使用Java和Python两种语言编写题解,力求得心应手。(本项目只包含题解代码,如有精彩的题目将同步更新题解说明文章到
所有引用内容均为学习使用,如若冒犯或侵权,立即删改
老的目录结构可查看这里
- 项目启动:需要在Python环境下启动
# 单线程启动
python server.py runserver
# 多线程启动
gunicorn server:app -c gunicorn.conf.py
# shell指令启动
sh run.sh
- core目录下存放着核心的代码实现、题目、题解等,根据题目类别进行归类,其下面的tmp目录请忽略(保留的旧版本代码)
- 代码目录最好使用英文命名,且其下的cpp、java、py、md文件必须与目录同命名,否则不会被解析到configs.json中,题解的md文件命名为在目录命名后加"_solution"示例:
TheSumOfTheTwoNumbers 题目所在目录
----TheSumOfTheTwoNumbers.cpp 题目C++解法
----TheSumOfTheTwoNumbers.java 题目Java解法
----TheSumOfTheTwoNumbers.py 题目Python解法
----TheSumOfTheTwoNumbers.md 题目
----TheSumOfTheTwoNumbers_solution.md 题目解法
- configs.json在启动时自动生成(更新),生成可视化界面相关数据(这样有利于加速访问,而不必每次访问时处理)。生成的可视化界面菜单是根据题目的md文件(譬如上述的TheSumOfTheTwoNumbers.md)配置生成的,并不是根据目录结构生成,配置规则如下:
$=title=$: 标题
$=class=$: 分类
$=origin=$: 题目来源
$=degree=$: 题目难度,Hard/Medium/Easy
$=link=$: 题目原题链接
1.有序数组中的单一元素(Java解法 | Python解法):题目难度(中等),题目类型(数组_二分查找)
2.矩阵中的幸运数(Java解法 | Python解法):题目难度(简单),题目类型(数组_矩阵)
3.适合打劫银行的日子(Java解法 | Python解法):题目难度(中等),题目类型(数组_动态规划_前缀和)
4.最长特殊序列 Ⅰ(Java解法 | Python解法):题目难度(简单),题目类型(字符串)
5.最长特殊序列 II(Java解法 | Python解法):题目难度(中等),题目类型(数组_哈希表_双指针_字符串_排序)
6.七进制数(Java解法 | Python解法):题目难度(简单),题目类型(数学)
7.子数组范围和(Java解法 | Python解法):题目难度(中等),题目类型(栈_数组_单调栈)
8.蜡烛之间的盘子(Java解法 | Python解法):题目难度(中等),题目类型(数组_字符串_二分查找_前缀和)
9.各位相加(Java解法 | Python解法):题目难度(简单),题目类型(数学_数论_模拟)
10.快乐数(Java解法 | Python解法):题目难度(简单),题目类型(哈希表_数学_双指针)
11.得分最高的最小轮调(Java解法 | Python解法):题目难度(困难),题目类型(数组_前缀和)
12.N 叉树的前序遍历(Java解法 | Python解法):题目难度(简单),题目类型(栈_树_深度优先搜索)
13.二叉树的前序遍历(Java解法 | Python解法):题目难度(简单),题目类型(栈_树_深度优先搜索_二叉树)
14.二叉树的中序遍历(Java解法 | Python解法):题目难度(简单),题目类型(栈_树_深度优先搜索_二叉树)
15.二叉树的后序遍历(Java解法 | Python解法):题目难度(简单),题目类型(栈_树_深度优先搜索_二叉树)
16.N 叉树的后序遍历(Java解法 | Python解法):题目难度(简单),题目类型(栈_树_深度优先搜索)
17.N 叉树的层序遍历(Java解法 | Python解法):题目难度(中等),题目类型(树_广度优先搜索)
18.统计最高分的节点数目(Java解法 | Python解法):题目难度(中等),题目类型(树_深度优先搜索_数组_二叉树)
19.寻找最近的回文数(Java解法 | Python解法):题目难度(困难),题目类型(数学_字符串)
20.Z 字形变换(Java解法 | Python解法):题目难度(中等),题目类型(字符串)
21.UTF-8 编码验证(Java解法 | Python解法):题目难度(中等),题目类型(位运算_数组)
22.最多可达成的换楼请求数目(Java解法 | Python解法):题目难度(困难),题目类型(位运算_数组_回溯_枚举)
23.两个列表的最小索引总和(Java解法 | Python解法):题目难度(简单),题目类型(数组_哈希表_字符串)
24.相交链表(Java解法 | Python解法):题目难度(简单),题目类型(哈希表_链表_双指针)
25.统计按位或能得到最大值的子集数目(Java解法 | Python解法):题目难度(中等),题目类型(位运算_数组_回溯)
26.最优除法(Java解法 | Python解法):题目难度(中等),题目类型(数组_数学_动态规划)
27.增量元素之间的最大差值(Java解法 | Python解法):题目难度(简单),题目类型(数组)
28.复数乘法(Java解法 | Python解法):题目难度(中等),题目类型(数学_字符串_模拟)
29.全 O(1) 的数据结构(Java解法 | Python解法):题目难度(困难),题目类型(设计_哈希表_链表_双向链表)
30.球会落何处(Java解法 | Python解法):题目难度(中等),题目类型(深度优先搜索_数组_动态规划_矩阵_模拟)
31.仅仅反转字母(Java解法 | Python解法):题目难度(简单),题目类型(双指针_字符串)
32.计数质数(Java解法 | Python解法):题目难度(中等),题目类型(数组_数学_枚举_数论)
33.词典中最长的单词(Java解法 | Python解法):题目难度(简单),题目类型(字典树_数组_哈希表_字符串_排序)
34.通过删除字母匹配到字典里最长单词(Java解法 | Python解法):题目难度(中等),题目类型(数组_双指针_字符串_排序)
35.实现一个魔法字典(Java解法 | Python解法):题目难度(中等),题目类型(设计_字典树_哈希表_字符串)
36.简易银行系统(Java解法 | Python解法):题目难度(中等),题目类型(设计_数组_哈希表_模拟)
37.学生分数的最小差值(Java解法 | Python解法):题目难度(简单),题目类型(数组_排序_滑动窗口)
38.根据二叉树创建字符串(Java解法 | Python解法):题目难度(简单),题目类型(树_深度优先搜索_字符串_二叉树)
39.寻找重复的子树(Java解法 | Python解法):题目难度(中等),题目类型(树_深度优先搜索_哈希表_二叉树)
40.最长的美好子字符串(Java解法 | Python解法):题目难度(简单),题目类型(位运算_哈希表_字符串_滑动窗口)
41.至少有 K 个重复字符的最长子串(Java解法 | Python解法):题目难度(中等),题目类型(哈希表_字符串_分治_滑动窗口)
42.网络空闲的时刻(Java解法 | Python解法):题目难度(中等),题目类型(广度优先搜索_图_数组)
43.切棍子的最小成本(Java解法 | Python解法):题目难度(困难),题目类型(数组_动态规划)
44.两数之和 IV - 输入 BST(Java解法 | Python解法):题目难度(简单),题目类型(树_深度优先搜索_广度优先搜索_二叉搜索树_哈希表_双指针_二叉树)
45.两数之和(Java解法 | Python解法):题目难度(简单),题目类型(数组_哈希表)
46.如果相邻两个颜色均相同则删除当前颜色(Java解法 | Python解法):题目难度(中等),题目类型(贪心_数学_字符串_博弈)
46.字符串的最大公因子(Java解法 | Python解法):题目难度(简单),题目类型(数学_字符串)
47.两数相加(Java解法 | Python解法):题目难度(中等),题目类型(递归_链表_数学)
48.字典序的第K小数字(Java解法 | Python解法):题目难度(困难),题目类型(字典树)
49.反转链表(Java解法 | Python解法):题目难度(简单),题目类型(递归_链表)
50.无重复字符的最长子串(Java解法 | Python解法):题目难度(中等),题目类型(哈希表_字符串_滑动窗口)
51.图片平滑器(Java解法 | Python解法):题目难度(简单),题目类型(数组_矩阵)
52.LRU 缓存(Java解法 | Python解法):题目难度(中等),题目类型(设计_哈希表_链表_双向链表)
53.数组中的第K个最大元素(Java解法 | Python解法):题目难度(中等),题目类型(数组_分治_快速选择_排序_堆(优先队列))
54.阶乘后的零(Java解法 | Python解法):题目难度(中等),题目类型(数学)
55.K 个一组翻转链表(Java解法 | Python解法):题目难度(困难),题目类型(递归_链表)
56.三数之和(Java解法 | Python解法):题目难度(中等),题目类型(数组_双指针_排序)
57.棒球比赛(Java解法 | Python解法):题目难度(简单),题目类型(栈_数组_模拟)
58.排序数组(Java解法 | Python解法):题目难度(中等),题目类型(数组_分治_桶排序_计数排序_快速排序_堆排序_归并排序)
59.找出缺失的观测数据(Java解法 | Python解法):题目难度(中等),题目类型(数组_数学_模拟)
60.最大子数组和(Java解法 | Python解法):题目难度(简单),题目类型(数组_分治_动态规划)
61.合并两个有序链表(Java解法 | Python解法):题目难度(简单),题目类型(递归_链表)
62.二叉树的层序遍历(Java解法 | Python解法):题目难度(中等),题目类型(数_广度优先搜索_二叉树)
63.环形链表(Java解法 | Python解法):题目难度(简单),题目类型(哈希表_链表_双指针)
64.买卖股票的最佳时机(Java解法 | Python解法):题目难度(简单),题目类型(数组_动态规划)
65.二叉树的锯齿形层序遍历(Java解法 | Python解法):题目难度(中等),题目类型(数_广度优先搜索_二叉树)
66.合并两个有序数组(Java解法 | Python解法):题目难度(简单),题目类型(数组_双指针_排序)
67.有效的括号(Java解法 | Python解法):题目难度(简单),题目类型(栈_字符串)
68.交替位二进制数(Java解法 | Python解法):题目难度(简单),题目类型(位运算)
69.二叉树的最近公共祖先(Java解法 | Python解法):题目难度(中等),题目类型(数_深度优先搜索_二叉树)
70.最长回文子串(Java解法 | Python解法):题目难度(中等),题目类型(字符串_动态规划)
71.搜索旋转排序数组(Java解法 | Python解法):题目难度(中等),题目类型(数组_二分查找)
72.考试的最大困扰度(Java解法 | Python解法):题目难度(中等),题目类型(字符串_二分查找_前缀和_滑动窗口)
73.岛屿数量(Java解法 | Python解法):题目难度(中等),题目类型(深度优先搜索_广度优先搜索_并查集_数组_矩阵)
74.全排列(Java解法 | Python解法):题目难度(中等),题目类型(数组_回溯)
75.字符串相加(Java解法 | Python解法):题目难度(简单),题目类型(数学_字符串_模拟)
76.找到处理最多请求的服务器(Java解法 | Python解法):题目难度(困难),题目类型(贪心_数组_有序集合_堆(优先队列))
77.合并K个升序链表(Java解法 | Python解法):题目难度(困难),题目类型(链表_分治_堆(优先队列)_归并排序)
78.自除数(Java解法 | Python解法):题目难度(简单),题目类型(数学)
79.反转链表 II(Java解法 | Python解法):题目难度(中等),题目类型(链表)
80.螺旋矩阵(Java解法 | Python解法):题目难度(中等),题目类型(数学_矩阵_模拟)
81.二倍数对数组(Java解法 | Python解法):题目难度(中等),题目类型(贪心_数组_哈希表_排序)
82.最长递增子序列(Java解法 | Python解法):题目难度(中等),题目类型(数组_二分查找_动态规划)
83.接雨水(Java解法 | Python解法):题目难度(困难),题目类型(栈_数组_双指针_动态规划_单调栈)
84.二分查找(Java解法 | Python解法):题目难度(简单),题目类型(数组_二分查找)
85.重排链表(Java解法 | Python解法):题目难度(中等),题目类型(栈_递归_链表_双指针)
86.强密码检验器(Java解法 | Python解法):题目难度(困难),题目类型(贪心_字符串_堆(优先队列))
87.用栈实现队列(Java解法 | Python解法):题目难度(简单),题目类型(栈_设计_队列)
88.二叉树中的最大路径和(Java解法 | Python解法):题目难度(困难),题目类型(树_深度优先搜索_动态规划_二叉树)
89.二叉树的右视图(Java解法 | Python解法):题目难度(中等),题目类型(树_深度优先搜索_广度优先搜索_二叉树)
90.爬楼梯(Java解法 | Python解法):题目难度(简单),题目类型(记忆化搜索_数学_动态规划)
91.最小高度树(Java解法 | Python解法):题目难度(中等),题目类型(深度优先搜索_广度优先搜索_图_拓扑排序)
92.旋转字符串(Java解法 | Python解法):题目难度(简单),题目类型(字符串_字符串匹配)
93.到达终点(Java解法 | Python解法):题目难度(困难),题目类型(数学)
93.搜索旋转排序数组 II(Java解法 | Python解法):题目难度(中等),题目类型(数组_二分查找)
94.寻找旋转排序数组中的最小值(Java解法 | Python解法):题目难度(中等),题目类型(数组_二分查找)
95.删除链表的倒数第 N 个结点(Java解法 | Python解法):题目难度(中等),题目类型(链表_双指针)
96.x 的平方根(Java解法 | Python解法):题目难度(简单),题目类型(数学_二分查找)
97.删除排序链表中的重复元素 II(Java解法 | Python解法):题目难度(中等),题目类型(链表_双指针)
98.唯一摩尔斯密码词(Java解法 | Python解法):题目难度(简单),题目类型(数组_哈希表_字符串)
99.合并区间(Java解法 | Python解法):题目难度(中等),题目类型(数组_排序)
100.编辑距离(Java解法 | Python解法):题目难度(中等),题目类型(数组_排序)
101.寻找两个正序数组的中位数(Java解法 | Python解法):题目难度(困难),题目类型(数组_二分查找_分治)
102.统计各位数字都不同的数字个数(Java解法 | Python解法):题目难度(中等),题目类型(数学_动态规划_回溯)
103.字符串转换整数 (atoi)(Java解法 | Python解法):题目难度(中等),题目类型(字符串)
104.排序链表(Java解法 | Python解法):题目难度(中等),题目类型(链表_双指针_分治_排序_归并排序)
105.写字符串需要的行数(Java解法 | Python解法):题目难度(简单),题目类型(数组_字符串)
106.链表中倒数第k个节点(Java解法 | Python解法):题目难度(简单),题目类型(链表_双指针)
107.最长公共子序列(Java解法 | Python解法):题目难度(中等),题目类型(字符串_动态规划)
108.括号生成(Java解法 | Python解法):题目难度(中等),题目类型(字符串_动态规划_回溯)
109.O(1) 时间插入、删除和获取随机元素(Java解法 | Python解法):题目难度(中等),题目类型(设计_数组_哈希表_数学_随机化)
110.缺失的第一个正数(Java解法 | Python解法):题目难度(困难),题目类型(数组_哈希表)
111.下一个排列(Java解法 | Python解法):题目难度(中等),题目类型(数组_双指针)
112.最富有客户的资产总量(Java解法 | Python解法):题目难度(简单),题目类型(数组_矩阵)
113.颠倒字符串中的单词(Java解法 | Python解法):题目难度(中等),题目类型(双指针_字符串)
114.复原 IP 地址(Java解法 | Python解法):题目难度(中等),题目类型(字符串_回溯)
115.从前序与中序遍历序列构造二叉树(Java解法 | Python解法):题目难度(中等),题目类型(树_数组_哈希表_分治_二叉树)
116.最大回文数乘积(Java解法 | Python解法):题目难度(困难),题目类型(数学)
117.滑动窗口最大值(Java解法 | Python解法):题目难度(困难),题目类型(队列_数组_滑动窗口_单调队列_堆(优先队列))
118.最小覆盖子串(Java解法 | Python解法):题目难度(困难),题目类型(哈希表_字符串_滑动窗口)
119.平衡二叉树(Java解法 | Python解法):题目难度(简单),题目类型(树_深度优先搜索_二叉树)
120.二叉树的最大深度(Java解法 | Python解法):题目难度(简单),题目类型(树_深度优先搜索_广度优先搜索_二叉树)
121.最常见的单词(Java解法 | Python解法):题目难度(简单),题目类型(哈希表_字符串_计数)
122.求根节点到叶节点数字之和(Java解法 | Python解法):题目难度(中等),题目类型(树_深度优先搜索_二叉树)
123.最小栈(Java解法 | Python解法):题目难度(简单),题目类型(栈_设计)
124.二叉树的直径(Java解法 | Python解法):题目难度(简单),题目类型(树_深度优先搜索_二叉树)
125.最长有效括号(Java解法 | Python解法):题目难度(困难),题目类型(栈_字符串_动态规划)
126.字典序排数(Java解法 | Python解法):题目难度(中等),题目类型(深度优先搜索_字典树)
127.验证二叉搜索树(Java解法 | Python解法):题目难度(中等),题目类型(树_深度优先搜索_二叉搜索树_二叉树)
128.字符的最短距离(Java解法 | Python解法):题目难度(简单),题目类型(数组_双指针_字符串)
129.路径总和 II(Java解法 | Python解法):题目难度(中等),题目类型(树_深度优先搜索_回溯_二叉树)
130.对称二叉树(Java解法 | Python解法):题目难度(简单),题目类型(树_深度优先搜索_广度优先搜索_二叉树)
131.文件的最长绝对路径(Java解法 | Python解法):题目难度(中等),题目类型(栈_深度优先搜索_字符串)
132.随机数索引(Java解法 | Python解法):题目难度(中等),题目类型(水塘抽样_哈希表_数学_随机化)
133.三维形体投影面积(Java解法 | Python解法):题目难度(简单),题目类型(几何_数组_数学_矩阵)
134.比较版本号(Java解法 | Python解法):题目难度(中等),题目类型(双指针_字符串)
135.子集(Java解法 | Python解法):题目难度(中等),题目类型(位运算_数组_回溯)
136.太平洋大西洋水流问题(Java解法 | Python解法):题目难度(中等),题目类型(深度优先搜索_广度优先搜索_数组_矩阵)
137.按奇偶排序数组(Java解法 | Python解法):题目难度(简单),题目类型(数组_双指针_排序)
138.子集 II(Java解法 | Python解法):题目难度(中等),题目类型(位运算_数组_回溯)
139.最小差值 I(Java解法 | Python解法):题目难度(简单),题目类型(数组_数学)
140.用 Rand7() 实现 Rand10()(Java解法 | Python解法):题目难度(中等),题目类型(数学_拒绝采样_概率与统计_随机化)
141.字符串相乘(Java解法 | Python解法):题目难度(中等),题目类型(数学_字符串_模拟)
142.两棵二叉搜索树中的所有元素(Java解法 | Python解法):题目难度(中等),题目类型(数_深度优先搜索_二叉搜索树_二叉树_排序)
143.零钱兑换(Java解法 | Python解法):题目难度(中等),题目类型(广度优先搜索_数组_动态规划)
144.最低票价(Java解法 | Python解法):题目难度(中等),题目类型(数组_动态规划)
145.最小路径和(Java解法 | Python解法):题目难度(中等),题目类型(数组_动态规划_矩阵)
146.标签验证器(Java解法 | Python解法):题目难度(困难),题目类型(栈_字符串)
147.回文链表(Java解法 | Python解法):题目难度(简单),题目类型(栈_递归_链表_双指针)
148.路径总和(Java解法 | Python解法):题目难度(简单),题目类型(树_深度优先搜索_广度优先搜索_二叉树)
149.最长重复子数组(Java解法 | Python解法):题目难度(中等),题目类型(数组_二分查找_动态规划_滑动窗口_哈希函数_滚动哈希)
150.多数元素(Java解法 | Python解法):题目难度(简单),题目类型(数组_哈希表_分治_计数_排序)
151.求众数 II(Java解法 | Python解法):题目难度(中等),题目类型(数组_哈希表_计数_排序)
152.重新排列日志文件(Java解法 | Python解法):题目难度(简单),题目类型(数组_字符串_排序)
153.旋转图像(Java解法 | Python解法):题目难度(中等),题目类型(数组_数学_矩阵)
154.翻转二叉树(Java解法 | Python解法):题目难度(简单),题目类型(树_深度优先搜素_广度优先搜索_二叉树)
155.组合总和(Java解法 | Python解法):题目难度(中等),题目类型(数组_回溯)
156.在排序数组中查找元素的第一个和最后一个位置(Java解法 | Python解法):题目难度(中等),题目类型(数组_二分查找)
157.找出游戏的获胜者(Java解法 | Python解法):题目难度(中等),题目类型(递归_队列_数组_数学_模拟)
158.圆圈中最后剩下的数字(Java解法 | Python解法):题目难度(简单),题目类型(递归_数学)
159.删除排序链表中的重复元素(Java解法 | Python解法):题目难度(简单),题目类型(链表)
160.最大正方形(Java解法 | Python解法):题目难度(中等),题目类型(数组_动态规划_矩阵)
161.乘积小于 K 的子数组(Java解法 | Python解法):题目难度(中等),题目类型(数组_滑动窗口)
162.乘积最大子数组(Java解法 | Python解法):题目难度(中等),题目类型(数组_动态规划)
163.和为 K 的子数组(Java解法 | Python解法):题目难度(中等),题目类型(数组_哈希表_前缀和)
164.最近的请求次数(Java解法 | Python解法):题目难度(简单),题目类型(设计_队列_数据流)
165.最大加号标志(Java解法 | Python解法):题目难度(中等),题目类型(数组_动态规划)
166.最小基因变化(Java解法 | Python解法):题目难度(中等),题目类型(广度优先搜索_哈希表_字符串)
167.数组中重复的数据(Java解法 | Python解法):题目难度(中等),题目类型(数组_哈希表)
168.找到所有数组中消失的数字(Java解法 | Python解法):题目难度(简单),题目类型(数组_哈希表)
169.寻找峰值(Java解法 | Python解法):题目难度(中等),题目类型(数组_二分查找)
170.山脉数组的峰顶索引(Java解法 | Python解法):题目难度(简单),题目类型(数组_二分查找)
171.猫和老鼠 II(Java解法 | Python解法):题目难度(困难),题目类型(广度优先搜索_图_记忆化搜索_数学_动态规划_博弈)
172.不同路径(Java解法 | Python解法):题目难度(中等),题目类型(数学_动态规划_组合数学)
173.不同路径 II(Java解法 | Python解法):题目难度(中等),题目类型(数组_动态规划_矩阵)
174.地下城游戏(Java解法 | Python解法):题目难度(困难),题目类型(数组_动态规划_矩阵)
175.序列化和反序列化二叉搜索树(Java解法 | Python解法):题目难度(中等),题目类型(树_深度优先搜索_广度优先搜索_设计_二叉搜索树_字符串_二叉树)
176.最长连续序列(Java解法 | Python解法):题目难度(中等),题目类型(并查集_数组_哈希表)
177.搜索二维矩阵 II(Java解法 | Python解法):题目难度(中等),题目类型(数组_二分查找_分治_矩阵)
178.搜索二维矩阵(Java解法 | Python解法):题目难度(中等),题目类型(数组_二分查找_矩阵)
179.删列造序(Java解法 | Python解法):题目难度(简单),题目类型(数组_字符串)
180.岛屿的最大面积(Java解法 | Python解法):题目难度(中等),题目类型(深度优先搜索_广度优先搜索_并查集_数组_矩阵)
181.岛屿的周长(Java解法 | Python解法):题目难度(简单),题目类型(深度优先搜索_广度优先搜索_数组_矩阵)
182.面试题 01.05. 一次编辑(Java解法 | Python解法):题目难度(中等),题目类型(双指针_字符串)
183.贴纸拼词(Java解法 | Python解法):题目难度(困难),题目类型(位运算_动态规划_回溯_状态压缩)
184.字符串解码(Java解法 | Python解法):题目难度(中等),题目类型(栈_递归_字符串)
185.两两交换链表中的节点(Java解法 | Python解法):题目难度(中等),题目类型(递归_链表)
186.最大三角形面积(Java解法 | Python解法):题目难度(简单),题目类型(几何_数组_数学)
187.基本计算器 II(Java解法 | Python解法):题目难度(中等),题目类型(栈_数学_字符串)
188.二叉树最大宽度(Java解法 | Python解法):题目难度(中等),题目类型(树_深度优先搜索_广度优先搜索_二叉树)
189.只出现一次的数字(Java解法 | Python解法):题目难度(简单),题目类型(位运算_数)
190.买卖股票的最佳时机 II(Java解法 | Python解法):题目难度(中等),题目类型(贪心_数组_动态规划)
191.面试题 04.06. 后继者(Java解法 | Python解法):题目难度(中等),题目类型(树_深度优先搜索_二叉搜索树_二叉树)
192.二叉搜索树与双向链表(Java解法 | Python解法):题目难度(中等),题目类型(栈_树_深度优先搜索_二叉搜索树_链表_二叉树_双向链表)
193.最少移动次数使数组元素相等 II(Java解法 | Python解法):题目难度(中等),题目类型(数组_数学_排序)
194.最小操作次数使数组元素相等(Java解法 | Python解法):题目难度(简单),题目类型(数组_数学)
195.寻找右区间(Java解法 | Python解法):题目难度(中等),题目类型(数组_二分查找_排序)
196.复制带随机指针的链表(Java解法 | Python解法):题目难度(中等),题目类型(哈希表_链表)
197.打家劫舍(Java解法 | Python解法):题目难度(中等),题目类型(数组_动态规划)
198.打家劫舍 II(Java解法 | Python解法):题目难度(中等),题目类型(数组_动态规划)
199.在长度 2N 的数组中找出重复 N 次的元素(Java解法 | Python解法):题目难度(简单),题目类型(数组_哈希表)
200.移动零(Java解法 | Python解法):题目难度(简单),题目类型(数组_双指针)
201.移除元素(Java解法 | Python解法):题目难度(简单),题目类型(数组_双指针)
202.长度最小的子数组(Java解法 | Python解法):题目难度(中等),题目类型(数组_二分查找_前缀和_滑动窗口)
203.我能赢吗(Java解法 | Python解法):题目难度(中等),题目类型(位运算_记忆化搜索_数学_动态规划_状态压缩_博弈)
204.二叉树的序列化与反序列化(Java解法 | Python解法):题目难度(困难),题目类型(树_深度优先搜索_广度优先搜索_设计_字符串_二叉树)
205.为高尔夫比赛砍树(Java解法 | Python解法):题目难度(困难),题目类型(广度优先搜索_数组_矩阵_堆(优先队列))
206.剑指 Offer 09. 用两个栈实现队列(Java解法 | Python解法):题目难度(简单),题目类型(栈_设计_队列)
207.剑指 Offer 54. 二叉搜索树的第k大节点(Java解法 | Python解法):题目难度(简单),题目类型(树_深度优先搜索_二叉搜索树_二叉树)
208.二叉树的完全性检验(Java解法 | Python解法):题目难度(中等),题目类型(树_广度优先搜索_二叉树)
209.单值二叉树(Java解法 | Python解法):题目难度(简单),题目类型(树_深度优先搜索_广度优先搜索_二叉树)
210.移掉 K 位数字(Java解法 | Python解法):题目难度(中等),题目类型(栈_贪心_字符串_单调栈)
211.面试题 17.11. 单词距离(Java解法 | Python解法):题目难度(中等),题目类型(数组_字符串)
212.删除最外层的括号(Java解法 | Python解法):题目难度(简单),题目类型(栈_字符串)
213.单词拆分(Java解法 | Python解法):题目难度(中等),题目类型(字典树_记忆化搜索_哈希表_字符串_动态规划)
214.单词拆分 II(Java解法 | Python解法):题目难度(困难),题目类型(字典树_记忆化搜索_哈希表_字符串_动态规划_回溯)
215.验证IP地址(Java解法 | Python解法):题目难度(中等),题目类型(字符串)
216.剑指 Offer 10- II. 青蛙跳台阶问题(Java解法 | Python解法):题目难度(简单),题目类型(记忆化搜索_数学_动态规划)
217.零钱兑换 II(Java解法 | Python解法):题目难度(中等),题目类型(数组_动态规划)
218.从根到叶的二进制数之和(Java解法 | Python解法):题目难度(简单),题目类型(树_深度优先搜索_二叉树)
219.课程表(Java解法 | Python解法):题目难度(中等),题目类型(深度优先搜索_广度优先搜索_图_拓扑排序)
220.火柴拼正方形(Java解法 | Python解法):题目难度(中等),题目类型(位运算_数组_动态规划_回溯_状态压缩)
221.剑指 Offer 51. 数组中的逆序对(Java解法 | Python解法):题目难度(困难),题目类型(树状数组_线段树_数组_二分查找_分治_有序集合_归并排序)
222.有效的回旋镖(Java解法 | Python解法):题目难度(简单),题目类型(几何_数组_数学)
223.每日温度(Java解法 | Python解法):题目难度(中等),题目类型(栈_数组_单调栈)
224.统计不同回文子序列(Java解法 | Python解法):题目难度(困难),题目类型(字符串_动态规划)
225.单词搜索(Java解法 | Python解法):题目难度(中等),题目类型(数组_回溯_矩阵)
226.将字符串翻转到单调递增(Java解法 | Python解法):题目难度(中等),题目类型(字符串_动态规划)
227.查找和替换模式(Java解法 | Python解法):题目难度(中等),题目类型(数组_哈希表_字符串)
228.全排列 II(Java解法 | Python解法):题目难度(中等),题目类型(数组_回溯)
229.高度检查器(Java解法 | Python解法):题目难度(简单),题目类型(数组_计数排序_排序)
230.Pow(x, n)(Java解法 | Python解法):题目难度(中等),题目类型(递归_数学)
231.螺旋矩阵 II(Java解法 | Python解法):题目难度(中等),题目类型(数组_矩阵_模拟)
232.找出第 K 小的数对距离(Java解法 | Python解法):题目难度(困难),题目类型(数组_双指针_二分查找_排序)
233.整数反转(Java解法 | Python解法):题目难度(中等),题目类型(数学)
234.复写零(Java解法 | Python解法):题目难度(简单),题目类型(数组_双指针)
235.剑指 Offer II 029. 排序的循环链表(Java解法 | Python解法):题目难度(中等),题目类型(链表)
236.剑指 Offer 40. 最小的k个数(Java解法 | Python解法):题目难度(简单),题目类型(数组_分治_快速选择_排序_堆(优先队列))
237.出现次数最多的子树元素和(Java解法 | Python解法):题目难度(中等),题目类型(树_深度优先搜索_哈希表_二叉树)
238.调整数组顺序使奇数位于偶数前面(Java解法 | Python解法):题目难度(简单),题目类型(数组_双指针_排序)
239.跳跃游戏(Java解法 | Python解法):题目难度(中等),题目类型(贪心_数组_动态规划)
240.二叉搜索树中第K小的元素(Java解法 | Python解法):题目难度(中等),题目类型(树_深度优先搜索_二叉搜索树_二叉树)
241.买卖股票的最佳时机 III(Java解法 | Python解法):题目难度(困难),题目类型(数组_动态规划)
242.分发糖果(Java解法 | Python解法):题目难度(困难),题目类型(贪心_数组)
243.找树左下角的值(Java解法 | Python解法):题目难度(中等),题目类型(树_深度优先搜索_广度优先搜索_二叉树)
244.删除有序数组中的重复项(Java解法 | Python解法):题目难度(简单),题目类型(数组_双指针)
245.剑指 Offer 42. 连续子数组的最大和(Java解法 | Python解法):题目难度(简单),题目类型(数组_分治_动态规划)
246.串联所有单词的子串(Java解法 | Python解法):题目难度(困难),题目类型(哈希表_字符串_滑动窗口)
247.盛最多水的容器(Java解法 | Python解法):题目难度(中等),题目类型(贪心_数组_双指针)
248.在每个树行中找最大值(Java解法 | Python解法):题目难度(中等),题目类型(树_深度优先搜索_广度优先搜索_二叉树)
249.删除二叉搜索树中的节点(Java解法 | Python解法):题目难度(中等),题目类型(树_二叉搜索树_二叉树)
250.验证回文串(Java解法 | Python解法):题目难度(简单),题目类型(双指针_字符串)
251.粉刷房子(Java解法 | Python解法):题目难度(中等),题目类型(数组_动态规划)
252.奇偶链表(Java解法 | Python解法):题目难度(中等),题目类型(链表)
253.黑名单中的随机数(Java解法 | Python解法):题目难度(困难),题目类型(哈希表_数学_二分查找_排序_随机化)
254.用队列实现栈(Java解法 | Python解法):题目难度(简单),题目类型(栈_设计_队列)
255.剑指 Offer 27. 二叉树的镜像(Java解法 | Python解法):题目难度(简单),题目类型(树_深度优先搜索_广度优先搜索_二叉树)
256.摆动排序 II(Java解法 | Python解法):题目难度(中等),题目类型(数组_分治_快速选择_排序)
257.TinyURL 的加密与解密(Java解法 | Python解法):题目难度(中等),题目类型(设计_哈希表_字符串_哈希函数)
258.另一棵树的子树(Java解法 | Python解法):题目难度(简单),题目类型(树_深度优先搜索_二叉树_字符串匹配_哈希函数)
259.剑指 Offer 04. 二维数组中的查找(Java解法 | Python解法):题目难度(中等),题目类型(数组_二分查找_分治_矩阵)
260.质数排列(Java解法 | Python解法):题目难度(简单),题目类型(数学)
261.打乱数组(Java解法 | Python解法):题目难度(中等),题目类型(数组_数学_随机化)
262.我的日程安排表 I(Java解法 | Python解法):题目难度(中等),题目类型(设计_线段树_二分查找_有序集合)
263.二叉树展开为链表(Java解法 | Python解法):题目难度(中等),题目类型(栈_树_深度优先搜索_链表_二叉树)
264.矩阵中的最长递增路径(Java解法 | Python解法):题目难度(困难),题目类型(深度优先搜索_广度优先搜索_图_拓扑排序_记忆化搜索_动态规划)
265.数据流的中位数(Java解法 | Python解法):题目难度(困难),题目类型(设计_双指针_数据流_排序_堆(优先队列))
266.轮转数组(Java解法 | Python解法):题目难度(中等),题目类型(数组_数学_双指针)
267.玩筹码(Java解法 | Python解法):题目难度(简单),题目类型(贪心_数组_数学)
268.解码方法(Java解法 | Python解法):题目难度(中等),题目类型(字符串_动态规划)
269.寻找重复数(Java解法 | Python解法):题目难度(中等),题目类型(位运算_数组_双指针_二分查找)
270.最长的斐波那契子序列的长度(Java解法 | Python解法):题目难度(中等),题目类型(数组_哈希表_动态规划)
271.两数相加 II(Java解法 | Python解法):题目难度(中等),题目类型(栈_链表_数学)
272.实现 Trie (前缀树)(Java解法 | Python解法):题目难度(中等),题目类型(设计_字典树_哈希表_字符串)