scuyjzh / leetcode-cn

Solutions for LeetCode(CN) Problems

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

leetcode-cn

✏️📖 Solutions for LeetCode(CN) Problems.

(Notes: "🔒" means you need a premium subscription)

Table of Contents

HOT 100

# 题目 题解 难度 标签
1 两数之和 Java 简单 数组 哈希表
2 两数相加 Java 中等 递归 链表 数学
3 无重复字符的最长子串 Java 中等 哈希表 字符串 滑动窗口
4 寻找两个正序数组的中位数 Java 困难 数组 二分查找 分治
5 最长回文子串 Java 中等 字符串 动态规划
10 正则表达式匹配 Java 困难 递归 字符串 动态规划
11 盛最多水的容器 Java 中等 贪心 数组 双指针
15 三数之和 Java 中等 数组 双指针 排序
17 电话号码的字母组合 Java 中等 哈希表 字符串 回溯
19 删除链表的倒数第 N 个节点 Java 中等 链表 双指针
20 有效的括号 Java 简单 栈 字符串
21 合并两个有序链表 Java 简单 递归 链表
22 括号生成 Java 中等 字符串 动态规划 回溯
23 合并K个升序链表 Java 困难 链表 分治 堆(优先队列) 归并排序
31 下一个排列 Java 中等 数组 双指针
32 最长有效括号 Java 困难 栈 字符串 动态规划
33 搜索旋转排序数组 Java 中等 数组 二分查找
34 在排序数组中查找元素的第一个和最后一个位置 Java 中等 数组 二分查找
39 组合总和 Java 中等 数组 回溯
42 接雨水 Java 困难 栈 数组 双指针 动态规划 单调栈
46 全排列 Java 中等 数组 回溯
48 旋转图像 Java 中等 数组 数学 矩阵
49 字母异位词分组 Java 中等 哈希表 字符串 排序
53 最大子数组和 Java 简单 数组 分治 动态规划
55 跳跃游戏 Java 中等 贪心 数组 动态规划
56 合并区间 Java 中等 数组 排序
62 不同路径 Java 中等 数学 动态规划 组合数学
64 最小路径和 Java 中等 数组 动态规划 矩阵
70 爬楼梯 Java 简单 记忆化搜索 数学 动态规划
72 编辑距离 Java 困难 字符串 动态规划
75 颜色分类 Java 中等 数组 双指针 排序
76 最小覆盖子串 Java 困难 哈希表 字符串 滑动窗口
78 子集 Java 中等 位运算 数组 回溯
79 单词搜索 Java 中等 数组 回溯 矩阵
84 柱状图中最大的矩形 Java 困难 栈 数组 单调栈
85 最大矩形 Java 困难 栈 数组 动态规划 矩阵 单调栈
94 二叉树的中序遍历 Java 简单 栈 树 深度优先搜索 二叉树
96 不同的二叉搜索树 Java 中等 树 二叉搜索树 数学 动态规划 二叉树
98 验证二叉搜索树 Java 中等 树 深度优先搜索 二叉搜索树 二叉树
101 对称二叉树 Java 简单 树 深度优先搜索 广度优先搜索 二叉树
102 二叉树的层序遍历 Java 中等 树 广度优先搜索 二叉树
104 二叉树的最大深度 Java 简单 树 深度优先搜索 广度优先搜索 二叉树
105 从前序与中序遍历序列构造二叉树 Java 中等 树 数组 哈希表 分治 二叉树
114 二叉树展开为链表 Java 中等 栈 树 深度优先搜索 链表 二叉树
121 买卖股票的最佳时机 Java 简单 数组 动态规划
124 二叉树中的最大路径和 Java 困难 树 深度优先搜索 动态规划 二叉树
128 最长连续序列 Java 中等 并查集 数组 哈希表
136 只出现一次的数字 Java 简单 位运算 数组
139 单词拆分 Java 中等 字典树 记忆化搜索 哈希表 字符串 动态规划
141 环形链表 Java 简单 哈希表 链表 双指针
142 环形链表 II Java 中等 哈希表 链表 双指针
146 LRU 缓存 Java 中等 设计 哈希表 链表 双向链表
148 排序链表 Java 中等 链表 双指针 分治 排序 归并排序
152 乘积最大子数组 Java 中等 数组 动态规划
155 最小栈 Java 简单 栈 设计
160 相交链表 Java 简单 哈希表 链表 双指针
169 多数元素 Java 简单 数组 哈希表 分治 计数 排序
198 打家劫舍 Java 中等 数组 动态规划
200 岛屿数量 Java 中等 深度优先搜索 广度优先搜索 并查集 数组 矩阵
206 反转链表 Java 简单 递归 链表
207 课程表 Java 中等 深度优先搜索 广度优先搜索 图 拓扑排序
208 实现 Trie (前缀树) Java 中等 设计 字典树 哈希表 字符串
215 数组中的第K个最大元素 Java 中等 数组 分治 快速排序 排序 堆(优先队列)
221 最大正方形 Java 中等 数组 动态规划 矩阵
226 翻转二叉树 Java 简单 树 深度优先搜索 广度优先搜索 二叉树
234 回文链表 Java 简单 栈 递归 链表 双指针
236 二叉树的最近公共祖先 Java 中等 树 深度优先搜索 二叉树
238 除自身以外数组的乘积 Java 中等 数组 前缀和
239 滑动窗口最大值 Java 困难 队列 数组 滑动窗口 单调队列 堆(优先队列)
240 搜索二维矩阵 II Java 中等 数组 二分查找 分治 矩阵
253 会议室 II 🔒 Java 中等 贪心 数组 双指针 排序 堆(优先队列)
279 完全平方数 Java 中等 广度优先搜索 数学 动态规划
283 移动零 Java 简单 数组 双指针
287 寻找重复数 Java 中等 位运算 数组 双指针 二分查找
297 二叉树的序列化与反序列化 Java 困难 树 深度优先搜索 二叉搜索树 设计 字符串 二叉树
300 最长递增子序列 Java 中等 数组 二分查找 动态规划
301 删除无效的括号 Java 困难 广度优先搜索 字符串 回溯
309 最佳买卖股票时机含冷冻期 Java 中等 数组 动态规划
312 戳气球 Java 困难 数组 动态规划
322 零钱兑换 Java 中等 广度优先搜索 数组 动态规划
337 打家劫舍 III Java 中等 树 深度优先搜索 动态规划 二叉树
338 比特位计数 Java 简单 位运算 动态规划
347 前 K 个高频元素 Java 中等 数组 哈希表 分治 桶排序 计数 快速排序 排序 堆(优先队列)
394 字符串解码 Java 中等 栈 递归 字符串
399 除法求值 Java 中等 深度优先搜索 广度优先搜索 并查集 图 数组 最短路
406 根据身高重建队列 Java 中等 贪心 数组 排序
416 分割等和子集 Java 中等 数组 动态规划
437 路径总和 III Java 中等 树 深度优先搜索 二叉树
438 找到字符串中所有字母异位词 Java 中等 哈希表 字符串 滑动窗口
448 找到所有数组中消失的数字 Java 简单 数组 哈希表
461 汉明距离 Java 简单 位运算
494 目标和 Java 中等 数组 动态规划 回溯
538 把二叉搜索树转换为累加树 Java 中等 树 深度优先搜索 二叉搜索树 二叉树
543 二叉树的直径 Java 简单 树 深度优先搜索 二叉树
560 和为 K 的子数组 Java 中等 数组 哈希表 前缀和
581 最短无序连续子数组 Java 中等 栈 贪心 数组 双指针 排序 单调栈
617 合并二叉树 Java 简单 树 深度优先搜索 广度优先搜索 二叉树
621 任务调度器 Java 中等 贪心 数组 哈希表 计数 排序 堆(优先队列)
739 每日温度 Java 中等 栈 数组 单调栈

Tags

Sliding Window & Two Pointers

循环不变量

# 题目 题解 难度 标签
26 删除有序数组中的重复项 Java 简单 数组 双指针
674 最长连续递增序列 Java 简单 数组
27 移除元素 Java 简单 数组 双指针
80 删除有序数组中的重复项 II Java 中等 数组 双指针
283 移动零 Java 简单 数组 双指针

使用循环不变量写对代码

# 题目 题解 难度 标签
75 颜色分类 Java 中等 数组 双指针 排序
215 数组中的第K个最大元素 Java 中等 数组 分治 快速排序 排序 堆(优先队列)

滑动窗口 1:同向交替移动的两个变量

# 题目 题解 难度 标签
643 子数组最大平均数 I Java 简单 数组 滑动窗口
1052 爱生气的书店老板 Java 中等 数组 滑动窗口
1423 可获得的最大点数 Java 中等 数组 前缀和 滑动窗口
1456 定长子串中元音的最大数目 Java 中等 字符串 滑动窗口
1658 将 x 减到 0 的最小操作数 Java 中等 数组 哈希表 二分查找 前缀和 滑动窗口

滑动窗口 2:不定长度的滑动窗口

# 题目 题解 难度 标签
76 最小覆盖子串 Java 困难 哈希表 字符串 滑动窗口
424 替换后的最长重复字符 Java 中等 哈希表 字符串 滑动窗口
3 无重复字符的最长子串 Java 中等 哈希表 字符串 滑动窗口
209 长度最小的子数组 Java 中等 数组 二分查找 前缀和 滑动窗口
1695 删除子数组的最大得分 Java 中等 数组 哈希表 滑动窗口
438 找到字符串中所有字母异位词 Java 中等 哈希表 字符串 滑动窗口
567 字符串的排列 Java 中等 哈希表 双指针 字符串 滑动窗口
487 最大连续1的个数 II 🔒 Java 中等 数组 动态规划 滑动窗口
1004 最大连续1的个数 III Java 中等 数组 二分查找 前缀和 滑动窗口
1208 尽可能使字符串相等 Java 中等 数组 二分查找 前缀和 滑动窗口
1493 删掉一个元素以后全为 1 的最长子数组 Java 中等 数学 动态规划 滑动窗口
978 最长湍流子数组 Java 中等 数组 动态规划 滑动窗口
1100 长度为 K 的无重复字符子串 🔒 Java 中等 哈希表 字符串 滑动窗口
1151 最少交换次数来组合所有的 1 🔒 Java 中等 数组 滑动窗口
1176 健身计划评估 Java 简单 数组 滑动窗口

滑动窗口 3:计数问题选讲

# 题目 题解 难度 标签
159 至多包含两个不同字符的最长子串 🔒 Java 中等 哈希表 字符串 滑动窗口
340 至多包含 K 个不同字符的最长子串 🔒 Java 中等 哈希表 字符串 滑动窗口
795 区间子数组个数 Java 中等 数组 双指针
992 K 个不同整数的子数组 Java 困难 数组 哈希表 计数 滑动窗口
713 乘积小于K的子数组 Java 中等 数组 滑动窗口
904 水果成篮 Java 中等 数组 哈希表 滑动窗口
1358 包含所有三种字符的子字符串数目 Java 中等 哈希表 字符串 滑动窗口
467 环绕字符串中唯一的子字符串 Java 中等 字符串 动态规划
719 找出第 k 小的距离对 Java 困难 数组 双指针 二分查找 排序

滑动窗口 4:使用数据结构维护窗口性质

# 题目 题解 难度 标签
239 滑动窗口最大值 Java 困难 队列 数组 滑动窗口 单调队列 堆(优先队列)
480 滑动窗口中位数 Java 困难 数组 哈希表 滑动窗口 堆(优先队列)
220 存在重复元素 III Java 中等 数组 桶排序 有序集合 排序 滑动窗口
1438 绝对差不超过限制的最长连续子数组 Java 中等 队列 数组 有序集合 滑动窗口 单调队列 堆(优先队列)

链表中的双指针问题

# 题目 题解 难度 标签
141 环形链表 Java 简单 哈希表 链表 双指针
19 删除链表的倒数第 N 个节点 Java 中等 链表 双指针
876 链表的中间结点 Java 简单 链表 双指针
142 环形链表 II Java 中等 哈希表 链表 双指针
160 相交链表 Java 简单 哈希表 链表 双指针

双指针:相向交替移动的两个变量

# 题目 题解 难度 标签
11 盛最多水的容器 Java 中等 贪心 数组 双指针
167 两数之和 II - 输入有序数组 Java 中等 数组 双指针 二分查找
15 三数之和 Java 中等 数组 双指针 排序
125 验证回文串 Java 简单 双指针 字符串
344 反转字符串 Java 简单 递归 双指针 字符串
345 反转字符串中的元音字母 Java 简单 双指针 字符串
16 最接近的三数之和 Java 中等 数组 双指针 排序
18 四数之和 Java 中等 数组 双指针 排序
42 接雨水 Java 困难 栈 数组 双指针 动态规划 单调栈
658 找到 K 个最接近的元素 Java 中等 数组 双指针 二分查找 排序 堆(优先队列)
259 较小的三数之和 🔒 Java 中等 数组 双指针 二分查找 排序
845 数组中的最长山脉 Java 中等 数组 双指针 动态规划 枚举
881 救生艇 Java 中等 贪心 数组 双指针 排序
925 长按键入 Java 简单 双指针 字符串
977 有序数组的平方 Java 简单 数组 双指针 排序
1229 安排会议日程 🔒 Java 中等 数组 双指针 排序

Array

# 题目 题解 难度 标签
27 移除元素 Java 简单 数组 双指针
26 删除有序数组中的重复项 Java 简单 数组 双指针
80 删除有序数组中的重复项 II Java 中等 数组 双指针
277 搜寻名人 🔒 Java 中等 贪心 图 双指针 交互
189 旋转数组 Java 中等 数组 数学 双指针
41 缺失的第一个正数 Java 困难 数组 哈希表
299 猜数字游戏 Java 中等 哈希表 字符串 计数
134 加油站 Java 中等 贪心 数组
118 杨辉三角 Java 简单 数组 动态规划
119 杨辉三角 II Java 简单 数组 动态规划
169 多数元素 Java 简单 数组 哈希表 分治 计数 排序
229 求众数 II Java 中等 数组 哈希表 计数 排序
274 H 指数 Java 中等 数组 计数排序 排序
275 H 指数 II Java 中等 数组 二分查找
243 最短单词距离 🔒 Java 简单 数组 字符串
244 最短单词距离 II 🔒 Java 中等 设计 数组 哈希表 双指针 字符串
245 最短单词距离 III 🔒 Java 中等 数组 字符串
217 存在重复元素 Java 简单 数组 哈希表 排序
219 存在重复元素 II Java 简单 数组 哈希表 滑动窗口
220 存在重复元素 III Java 中等 数组 桶排序 有序集合 排序 滑动窗口
55 跳跃游戏 Java 中等 贪心 数组 动态规划
45 跳跃游戏 II Java 中等 贪心 数组 动态规划
121 买卖股票的最佳时机 Java 简单 数组 动态规划
122 买卖股票的最佳时机 II Java 中等 贪心 数组 动态规划
123 买卖股票的最佳时机 III Java 困难 数组 动态规划
188 买卖股票的最佳时机 IV Java 困难 数组 动态规划
309 最佳买卖股票时机含冷冻期 Java 中等 数组 动态规划
714 买卖股票的最佳时机含手续费 Java 中等 贪心 数组 动态规划
11 盛最多水的容器 Java 中等 贪心 数组 双指针
42 接雨水 Java 困难 栈 数组 双指针 动态规划 单调栈
334 递增的三元子序列 Java 中等 贪心 数组
128 最长连续序列 Java 中等 并查集 数组 哈希表
164 最大间距 Java 困难 数组 桶排序 基数排序 排序
287 寻找重复数 Java 中等 位运算 数组 双指针 二分查找
135 分发糖果 Java 困难 贪心 数组
330 按要求补齐数组 Java 困难 贪心 数组
4 寻找两个正序数组的中位数 Java 困难 数组 二分查找 分治
321 拼接最大数 Java 困难 栈 贪心 单调栈
327 区间和的个数 Java 困难 树状数组 线段树 数组 二分查找 分治 有序集合 归并排序
289 生命游戏 Java 中等 数组 矩阵 模拟
57 插入区间 Java 中等 数组
56 合并区间 Java 中等 数组 排序
252 会议室 🔒 Java 简单 数组 排序
253 会议室 II 🔒 Java 中等 贪心 数组 双指针 排序 堆(优先队列)
352 将数据流变为多个不相交区间 Java 困难 设计 二分查找 有序集合
57 插入区间 Java 中等 数组
56 合并区间 Java 中等 数组 排序
252 会议室 🔒 Java 简单 数组 排序
253 会议室 II 🔒 Java 中等 贪心 数组 双指针 排序 堆(优先队列)
352 将数据流变为多个不相交区间 Java 困难 设计 二分查找 有序集合
239 滑动窗口最大值 Java 困难 队列 数组 滑动窗口 单调队列 堆(优先队列)
295 数据流的中位数 Java 困难 设计 双指针 数据流 排序 堆(优先队列)
53 最大子数组和 Java 简单 数组 分治 动态规划
325 和等于 k 的最长子数组长度 🔒 Java 中等 数组 哈希表
209 长度最小的子数组 Java 中等 数组 二分查找 前缀和 滑动窗口
238 除自身以外数组的乘积 Java 中等 数组 前缀和
152 乘积最大子数组 Java 中等 数组 动态规划
228 汇总区间 Java 简单 数组
163 缺失的区间 🔒 Java 简单 数组
88 合并两个有序数组 Java 简单 数组 双指针 排序
75 颜色分类 Java 中等 数组 双指针 排序
283 移动零 Java 简单 数组 双指针
376 摆动序列 Java 中等 贪心 数组 动态规划
280 摆动排序 🔒 Java 中等 贪心 数组 排序
324 摆动排序 II 🔒 Java 中等 数组 分治 快速排序 排序
278 第一个错误的版本 Java 简单 二分查找 交互
35 搜索插入位置 Java 简单 数组 二分查找
33 搜索旋转排序数组 Java 中等 数组 二分查找
81 搜索旋转排序数组 II Java 中等 数组 二分查找
153 寻找旋转排序数组中的最小值 Java 中等 数组 二分查找
154 寻找旋转排序数组中的最小值 II Java 困难 数组 二分查找
162 寻找峰值 Java 中等 数组 二分查找
374 猜数字大小 Java 简单 二分查找 交互
34 在排序数组中查找元素的第一个和最后一个位置 Java 中等 数组 二分查找
349 两个数组的交集 Java 简单 数组 哈希表 双指针 二分查找 排序
350 两个数组的交集 II Java 简单 数组 哈希表 双指针 二分查找 排序
315 计算右侧小于当前元素的个数 Java 困难 树状数组 线段树 数组 二分查找 分治 有序集合 归并排序
300 最长递增子序列 Java 中等 数组 二分查找 动态规划
354 俄罗斯套娃信封问题 Java 困难 数组 二分查找 动态规划 排序

String

# 题目 题解 难度 标签
28 实现 strStr() Java 简单 双指针 字符串 字符串匹配
14 最长公共前缀 Java 简单 字符串
58 最后一个单词的长度 Java 简单 字符串
387 字符串中的第一个唯一字符 Java 简单 队列 哈希表 字符串 计数
383 赎金信 Java 简单 哈希表 字符串 计数
344 反转字符串 Java 简单 递归 双指针 字符串
151 翻转字符串里的单词 Java 中等 双指针 字符串
186 翻转字符串里的单词 II 🔒 Java 中等 双指针 字符串
345 反转字符串中的元音字母 Java 简单 双指针 字符串
205 同构字符串 Java 简单 哈希表 字符串
293 翻转游戏 🔒 Java 简单 字符串
294 翻转游戏 II 🔒 Java 中等 记忆化搜索 数学 动态规划 回溯 博弈
290 单词规律 Java 简单 哈希表 字符串
242 有效的字母异位词 Java 简单 哈希表 字符串 排序
49 字母异位词分组 Java 中等 哈希表 字符串 排序
249 移位字符串分组 🔒 Java 中等 数组 哈希表 字符串
87 扰乱字符串 Java 困难 字符串 动态规划
179 最大数 Java 中等 贪心 字符串 排序
6 Z 字形变换 Java 中等 字符串
161 相隔为 1 的编辑距离 🔒 Java 中等 双指针 字符串
38 外观数列 Java 中等 字符串
358 K 距离间隔重排字符串 🔒 Java 困难 贪心 哈希表 字符串 计数 排序 堆(优先队列)
316 去除重复字母 Java 中等 栈 贪心 字符串 单调栈
271 字符串的编码与解码 🔒 Java 中等 设计 数组 字符串
168 Excel表列名称 Java 简单 数学 字符串
171 Excel 表列序号 Java 简单 数学 字符串
13 罗马数字转整数 Java 简单 哈希表 数学 字符串
12 整数转罗马数字 Java 中等 哈希表 数学 字符串
273 整数转换英文表示 Java 困难 递归 数学 字符串
246 中心对称数 🔒 Java 简单 哈希表 双指针 字符串
247 中心对称数 II 🔒 Java 中等 递归 数组 字符串
248 中心对称数 III 🔒 Java 困难 递归 数组 字符串
157 用 Read4 读取 N 个字符 🔒 Java 简单 字符串 交互 模拟
158 用 Read4 读取 N 个字符 II 🔒 Java 困难 字符串 交互 模拟
68 文本左右对齐 Java 困难 字符串 模拟
65 有效数字 Java 困难 字符串
76 最小覆盖子串 Java 困难 哈希表 字符串 滑动窗口
30 串联所有单词的子串 Java 困难 哈希表 字符串 滑动窗口
3 无重复字符的最长子串 Java 中等 哈希表 字符串 滑动窗口
340 至多包含 K 个不同字符的最长子串 🔒 Java 中等 哈希表 字符串 滑动窗口
395 至少有 K 个重复字符的最长子串 Java 中等 哈希表 字符串 分治 滑动窗口
159 至多包含两个不同字符的最长子串 🔒 Java 中等 哈希表 字符串 滑动窗口
125 验证回文串 Java 简单 双指针 字符串
266 回文排列 🔒 Java 简单 位运算 哈希表 字符串
5 最长回文子串 Java 中等 字符串 动态规划
9 回文数 Java 简单 数学
214 最短回文串 Java 困难 字符串 字符串匹配 哈希函数 滚动哈希
336 回文对 Java 困难 字典树 数组 哈希表 字符串
131 分割回文串 Java 中等 字符串 动态规划 回溯
132 分割回文串 II Java 困难 字符串 动态规划
267 回文排列 II 🔒 Java 中等 哈希表 字符串 回溯
20 有效的括号 Java 简单 栈 字符串
22 括号生成 Java 中等 字符串 动态规划 回溯
32 最长有效括号 Java 困难 栈 字符串 动态规划
241 为运算表达式设计优先级 Java 中等 递归 记忆化搜索 数学 字符串 动态规划
301 删除无效的括号 Java 困难 广度优先搜索 字符串 回溯
392 判断子序列 Java 简单 双指针 字符串 动态规划
115 不同的子序列 Java 困难 字符串 动态规划
187 重复的DNA序列 Java 中等 位运算 哈希表 字符串 滑动窗口 滚动哈希

Math

# 题目 题解 难度 标签
7 整数反转 Java 简单 数学
165 比较版本号 Java 中等 双指针 字符串
66 加一 Java 简单 数组 数学
8 字符串转换整数 (atoi) Java 中等 字符串
258 各位相加 Java 简单 数学 数论 模拟
67 二进制求和 Java 简单 位运算 数学 字符串 模拟
43 字符串相乘 Java 中等 数学 字符串 模拟
29 两数相除 Java 中等 位运算 数学
69 Sqrt(x) Java 简单 数学 二分查找
50 Pow(x, n) Java 中等 递归 数学
367 有效的完全平方数 Java 简单 数学 二分查找
365 水壶问题 Java 中等 深度优先搜索 广度优先搜索 数学
204 计数质数 Java 中等 数组 数学 枚举 数论
1 两数之和 Java 简单 数组 哈希表
167 两数之和 II - 输入有序数组 Java 中等 数组 双指针 二分查找
15 三数之和 Java 中等 数组 双指针 排序
16 最接近的三数之和 Java 中等 数组 双指针 排序
259 较小的三数之和 🔒 Java 中等 数组 双指针 二分查找 排序
18 四数之和 Java 中等 数组 双指针 排序
231 2 的幂 Java 简单 位运算 递归 数学
326 3的幂 Java 简单 递归 数学
342 4的幂 Java 简单 位运算 递归 数学
372 超级次方 Java 中等 数学 分治
233 数字 1 的个数 Java 困难 递归 数学 动态规划
319 灯泡开关 Java 中等 脑筋急转弯 数学
292 Nim 游戏 Java 简单 脑筋急转弯 数学 博弈
202 快乐数 Java 简单 哈希表 双指针 数学
400 第 N 位数字 Java 中等 数学 二分查找
263 丑数 Java 简单 数学
264 丑数 II Java 中等 哈希表 数学 动态规划 堆(优先队列)
306 累加数 Java 中等 字符串 回溯
172 阶乘后的零 Java 中等 数学
396 旋转函数 Java 中等 数学 动态规划
390 消除游戏 Java 中等 数学
386 字典序排数 Java 中等 深度优先搜索 字典树
357 计算各个位数不同的数字个数 Java 中等 数学 动态规划 回溯
360 有序转化数组 🔒 Java 中等 数组 数学 双指针 排序
397 整数替换 Java 中等 贪心 位运算 记忆化搜索 动态规划
368 最大整除子集 Java 中等 数组 数学 动态规划 排序

Tree

# 题目 题解 难度 标签
144 二叉树的前序遍历 Java 简单 栈 树 深度优先搜索 二叉树
94 二叉树的中序遍历 Java 简单 栈 树 深度优先搜索 二叉树
145 二叉树的后序遍历 Java 简单 栈 树 深度优先搜索 二叉树
102 二叉树的层序遍历 Java 中等 树 广度优先搜索 二叉树
100 相同的树 Java 简单 树 深度优先搜索 广度优先搜索 二叉树
101 对称二叉树 Java 简单 树 深度优先搜索 广度优先搜索 二叉树
226 翻转二叉树 Java 简单 树 深度优先搜索 广度优先搜索 二叉树
257 二叉树的所有路径 Java 简单 树 深度优先搜索 字符串 二叉树
112 路径总和 Java 简单 树 深度优先搜索 二叉树
113 路径总和 II Java 中等 树 深度优先搜索 回溯 二叉树
129 求根节点到叶节点数字之和 Java 中等 树 深度优先搜索 二叉树
298 二叉树最长连续序列 🔒 Java 中等 树 深度优先搜索 二叉树
111 二叉树的最小深度 Java 简单 树 深度优先搜索 广度优先搜索 二叉树
104 二叉树的最大深度 Java 简单 树 深度优先搜索 广度优先搜索 二叉树
110 平衡二叉树 Java 简单 树 深度优先搜索 二叉树
124 二叉树中的最大路径和 Java 困难 树 深度优先搜索 动态规划 二叉树
250 统计同值子树 🔒 Java 中等 树 深度优先搜索 二叉树
366 寻找二叉树的叶子节点 🔒 Java 中等 树 深度优先搜索 二叉树
337 打家劫舍 III Java 中等 树 深度优先搜索 动态规划 二叉树
107 二叉树的层序遍历 II Java 中等 树 广度优先搜索 二叉树
103 二叉树的锯齿形层序遍历 Java 中等 树 广度优先搜索 二叉树
199 二叉树的右视图 Java 中等 树 深度优先搜索 广度优先搜索 二叉树
98 验证二叉搜索树 Java 中等 树 深度优先搜索 二叉搜索树 二叉树
235 二叉搜索树的最近公共祖先 Java 简单 树 深度优先搜索 二叉搜索树 二叉树
236 二叉树的最近公共祖先 Java 中等 树 深度优先搜索 二叉树
108 将有序数组转换为二叉搜索树 Java 简单 树 二叉搜索树 数组 分治 二叉树
109 有序链表转换二叉搜索树 Java 中等 树 二叉搜索树 链表 分治 二叉树
173 二叉搜索树迭代器 Java 中等 栈 树 设计 二叉搜索树 二叉树 迭代器
230 二叉搜索树中第K小的元素 Java 中等 树 深度优先搜索 二叉搜索树 二叉树
297 二叉树的序列化与反序列化 Java 困难 树 深度优先搜索 二叉搜索树 设计 字符串 二叉树
285 二叉搜索树中的中序后继 🔒 Java 中等 树 深度优先搜索 二叉搜索树 二叉树
270 最接近的二叉搜索树值 🔒 Java 简单 树 深度优先搜索 二叉搜索树 二分查找 二叉树
272 最接近的二叉搜索树值 II 🔒 Java 困难 栈 树 深度优先搜索 二叉搜索树 双指针 二叉树 堆(优先队列)
99 恢复二叉搜索树 Java 中等 树 深度优先搜索 二叉搜索树 二叉树
156 上下翻转二叉树 🔒 Java 中等 树 深度优先搜索 二叉树
114 二叉树展开为链表 Java 中等 栈 树 深度优先搜索 链表 二叉树
255 验证前序遍历序列二叉搜索树 🔒 Java 中等 栈 树 二叉搜索树 递归 二叉树 单调栈
333 最大 BST 子树 🔒 Java 中等 树 深度优先搜索 二叉搜索树 动态规划 二叉树
222 完全二叉树的节点个数 Java 中等 树 深度优先搜索 二分查找 二叉树
105 从前序与中序遍历序列构造二叉树 Java 中等 树 数组 哈希表 分治 二叉树
106 从中序与后序遍历序列构造二叉树 Java 中等 树 数组 哈希表 分治 二叉树
116 填充每个节点的下一个右侧节点指针 Java 中等 树 深度优先搜索 广度优先搜索 二叉树
117 填充每个节点的下一个右侧节点指针 II Java 中等 树 深度优先搜索 广度优先搜索 二叉树
314 二叉树的垂直遍历 🔒 Java 中等 树 深度优先搜索 广度优先搜索 哈希表 二叉树
96 不同的二叉搜索树 Java 中等 树 二叉搜索树 数学 动态规划 二叉树
95 不同的二叉搜索树 II Java 中等 树 二叉搜索树 动态规划 回溯 二叉树
331 验证二叉树的前序序列化 Java 中等 栈 树 字符串 二叉树

Backtracking

# 题目 题解 难度 标签
78 子集 Java 中等 位运算 数组 回溯
90 子集 II Java 中等 位运算 数组 回溯
77 组合 Java 中等 数组 回溯
39 组合总和 Java 中等 数组 回溯
40 组合总和 II Java 中等 数组 回溯
216 组合总和 III Java 中等 数组 回溯
377 组合总和 Ⅳ Java 中等 数组 动态规划
254 因子的组合 Java 中等 数组 回溯
46 全排列 Java 中等 数组 回溯
47 全排列 II Java 中等 数组 回溯
31 下一个排列 Java 中等 数组 双指针
60 排列序列 Java 困难 递归 数学
291 单词规律 II 🔒 Java 中等 哈希表 字符串 回溯
17 电话号码的字母组合 Java 中等 哈希表 字符串 回溯
320 列举单词的全部缩写 🔒 Java 中等 位运算 字符串 回溯
93 复原 IP 地址 Java 中等 字符串 回溯
282 给表达式添加运算符 Java 困难 数学 字符串 回溯
140 单词拆分 II Java 困难 字典树 记忆化搜索 哈希表 字符串 动态规划 回溯
351 安卓系统手势解锁 🔒 Java 中等 动态规划 回溯

Dynamic Programming

# 题目 题解 难度 标签
70 爬楼梯 Java 简单 记忆化搜索 数学 动态规划
62 不同路径 Java 中等 数学 动态规划 组合数学
63 不同路径 II Java 中等 数学 动态规划 矩阵
120 三角形最小路径和 Java 中等 数学 动态规划
279 完全平方数 Java 中等 广度优先搜索 数学 动态规划
139 单词拆分 Java 中等 字典树 记忆化搜索 哈希表 字符串 动态规划
375 猜数字大小 II Java 中等 数学 动态规划 博弈
312 戳气球 Java 困难 数组 动态规划
322 零钱兑换 Java 中等 广度优先搜索 数组 动态规划
256 粉刷房子 🔒 Java 中等 数组 动态规划
265 粉刷房子 II 🔒 Java 困难 数组 动态规划
64 最小路径和 Java 中等 数组 动态规划 矩阵
72 编辑距离 Java 困难 字符串 动态规划
97 交错字符串 Java 中等 字符串 动态规划
174 地下城游戏 Java 困难 数组 动态规划 矩阵
221 最大正方形 Java 中等 数组 动态规划 矩阵
85 最大矩形 Java 困难 栈 数组 动态规划 矩阵 单调栈
363 矩形区域不超过 K 的最大数值和 Java 困难 数组 二分查找 动态规划 矩阵 有序集合
198 打家劫舍 Java 中等 数组 动态规划
213 打家劫舍 II Java 中等 数组 动态规划
276 栅栏涂色 🔒 Java 中等 动态规划
91 解码方法 Java 中等 字符串 动态规划
10 正则表达式匹配 Java 困难 递归 字符串 动态规划
44 通配符匹配 Java 困难 贪心 递归 字符串 动态规划

LinkedList

# 题目 题解 难度 标签
206 反转链表 Java 简单 递归 链表
141 环形链表 Java 简单 哈希表 链表 双指针
24 两两交换链表中的节点 Java 中等 递归 链表
328 奇偶链表 Java 中等 链表
92 反转链表 II Java 中等 链表
237 删除链表中的节点 Java 简单 链表
19 删除链表的倒数第 N 个节点 Java 中等 链表 双指针
83 删除排序链表中的重复元素 Java 简单 链表
203 移除链表元素 Java 简单 递归 链表
82 删除排序链表中的重复元素 II Java 中等 链表 双指针
369 给单链表加一 🔒 Java 中等 链表 数学
2 两数相加 Java 中等 递归 链表 数学
160 相交链表 Java 简单 哈希表 链表 双指针
21 合并两个有序链表 Java 简单 递归 链表
234 回文链表 Java 简单 栈 递归 链表 双指针
143 重排链表 Java 中等 栈 递归 链表 双指针
142 环形链表 II Java 中等 哈希表 链表 双指针
148 排序链表 Java 中等 链表 双指针 分治 排序 归并排序
25 K 个一组翻转链表 Java 困难 递归 链表
61 旋转链表 Java 中等 链表 双指针
86 分隔链表 Java 中等 链表 双指针
23 合并K个升序链表 Java 困难 链表 分治 堆(优先队列) 归并排序
147 对链表进行插入排序 Java 中等 链表 排序

Binary Search

# 题目 题解 难度 标签
278 第一个错误的版本 Java 简单 二分查找 交互
35 搜索插入位置 Java 简单 数组 二分查找
81 搜索旋转排序数组 II Java 中等 数组 二分查找
153 寻找旋转排序数组中的最小值 Java 中等 数组 二分查找
162 寻找峰值 Java 中等 数组 二分查找
374 猜数字大小 Java 简单 二分查找 交互
34 在排序数组中查找元素的第一个和最后一个位置 Java 中等 数组 二分查找
349 两个数组的交集 Java 简单 数组 哈希表 双指针 二分查找 排序
350 两个数组的交集 II Java 简单 数组 哈希表 双指针 二分查找 排序
315 计算右侧小于当前元素的个数 Java 困难 树状数组 线段树 数组 二分查找 分治 有序集合 归并排序
300 最长递增子序列 Java 中等 数组 二分查找 动态规划
354 俄罗斯套娃信封问题 Java 困难 数组 二分查找 动态规划 排序

Matrix

# 题目 题解 难度 标签
48 旋转图像 Java 中等 数组 数学 矩阵
54 螺旋矩阵 Java 中等 数组 矩阵 模拟
59 螺旋矩阵 II Java 中等 数组 矩阵 模拟
73 矩阵置零 Java 中等 数组 哈希表 矩阵
311 稀疏矩阵的乘法 🔒 Java 中等 数组 哈希表 矩阵
329 矩阵中的最长递增路径 Java 困难 深度优先搜索 广度优先搜索 图 拓扑排序 记忆化搜索 动态规划
378 有序矩阵中第 K 小的元素 Java 中等 数组 二分查找 矩阵 排序 堆(优先队列)
74 搜索二维矩阵 Java 中等 数组 二分查找 矩阵
240 搜索二维矩阵 II Java 中等 数组 二分查找 分治 矩阵
370 区间加法 🔒 Java 中等 数组 前缀和
79 单词搜索 Java 中等 数组 回溯 矩阵
296 最佳的碰头地点 🔒 Java 困难 数组 数学 矩阵 排序
361 轰炸敌人 🔒 Java 中等 数组 动态规划 矩阵
317 离建筑物最近的距离 🔒 Java 困难 广度优先搜索 数组 矩阵
302 包含全部黑色像素的最小矩形 🔒 Java 困难 深度优先搜索 广度优先搜索 数组 二分查找 矩阵
36 有效的数独 Java 中等 数组 哈希表 矩阵
37 解数独 Java 困难 数组 回溯 矩阵

DFS & BFS

# 题目 题解 难度 标签
200 岛屿数量 Java 中等 深度优先搜索 广度优先搜索 并查集 数组 矩阵
286 墙与门 🔒 Java 中等 广度优先搜索 数组 矩阵
130 被围绕的区域 Java 中等 深度优先搜索 广度优先搜索 并查集 数组 矩阵
339 嵌套列表权重和 🔒 Java 中等 深度优先搜索 广度优先搜索
364 加权嵌套序列和 II 🔒 Java 中等 栈 深度优先搜索 广度优先搜索
127 单词接龙 Java 困难 广度优先搜索 哈希表 字符串
126 单词接龙 II Java 困难 广度优先搜索 哈希表 字符串 回溯
51 N 皇后 Java 困难 数组 回溯
52 N皇后 II Java 困难 回溯

Stack & PriorityQueue

# 题目 题解 难度 标签
155 最小栈 Java 简单 栈 设计
232 用栈实现队列 Java 简单 栈 设计 队列
225 用队列实现栈 Java 简单 栈 设计 队列
150 逆波兰表达式求值 Java 中等 栈 数组 数学
71 简化路径 Java 中等 栈 字符串
388 文件的最长绝对路径 Java 中等 栈 深度优先搜索 字符串
394 字符串解码 Java 中等 栈 递归 字符串
224 基本计算器 Java 困难 栈 递归 数学 字符串
227 基本计算器 II Java 中等 栈 数学 字符串
385 迷你语法分析器 Java 中等 栈 深度优先搜索 字符串
84 柱状图中最大的矩形 Java 困难 栈 数组 单调栈
215 数组中的第K个最大元素 Java 中等 数组 分治 快速排序 排序 堆(优先队列)
347 前 K 个高频元素 Java 中等 数组 哈希表 分治 桶排序 计数 快速排序 排序 堆(优先队列)
313 超级丑数 Java 中等 数组 哈希表 数学 动态规划 堆(优先队列)
373 查找和最小的K对数字 Java 中等 数组 堆(优先队列)
218 天际线问题 Java 困难 树状数组 线段树 数组 分治 有序集合 扫描线 堆(优先队列)
332 重新安排行程 Java 困难 深度优先搜索 图 欧拉回路

Bit Manipulation

# 题目 题解 难度 标签
389 找不同 Java 简单 位运算 哈希表 字符串 排序
136 只出现一次的数字 Java 简单 位运算 数组
318 最大单词长度乘积 Java 中等 位运算 数组 字符串
393 UTF-8 编码验证 Java 中等 位运算 数组
201 数字范围按位与 Java 中等 位运算
371 两整数之和 Java 中等 位运算 数学
338 比特位计数 Java 简单 位运算 动态规划
89 格雷编码 Java 中等 位运算 数学 回溯
268 丢失的数字 Java 简单 位运算 数组 哈希表 数学 排序
191 位1的个数 Java 简单 位运算
190 颠倒二进制位 Java 简单 位运算 分治
137 只出现一次的数字 II Java 中等 位运算 数组
260 只出现一次的数字 III Java 中等 位运算 数组

Graph

# 题目 题解 难度 标签
133 克隆图 Java 中等 深度优先搜索 广度优先搜索 图 哈希表
399 除法求值 Java 中等 深度优先搜索 广度优先搜索 并查集 图 数组 最短路
310 最小高度树 Java 中等 深度优先搜索 广度优先搜索 图 拓扑排序
207 课程表 Java 中等 深度优先搜索 广度优先搜索 图 拓扑排序
210 课程表 II Java 中等 深度优先搜索 广度优先搜索 图 拓扑排序
149 直线上最多的点数 Java 困难 几何 哈希表 数学
305 岛屿数量 II Java 困难 并查集 数组
547 省份数量 Java 中等 深度优先搜索 广度优先搜索 图 并查集

Trie

# 题目 题解 难度 标签
211 添加与搜索单词 - 数据结构设计 Java 中等 深度优先搜索 设计 字典树 字符串
208 实现 Trie (前缀树) Java 中等 设计 字典树 哈希表 字符串
212 单词搜索 II Java 困难 字典树 数组 字符串 回溯 矩阵

Design

# 题目 题解 难度 标签
146 LRU 缓存 Java 中等 设计 哈希表 链表 双向链表
460 LFU 缓存 Java 困难 设计 哈希表 链表 双向链表

About

Solutions for LeetCode(CN) Problems


Languages

Language:Java 100.0%