algorithm-notes
LeetCode
# | Title | Solution | Difficulty | Tag |
---|---|---|---|---|
1 | 两数之和 | Java | Easy | |
2 | 两数相加 | Java | Medium | |
3 | 无重复字符的最长子串 | Java | Medium | 滑动窗口 |
4 | 寻找两个正序数组的中位数 | Java | Hard | 二分查找 |
5 | 最长回文子串 | Java | Medium | 动态规划 |
7 | 整数反转 | Java | Easy | |
8 | 字符串转换整数 (atoi) | Java | Medium | |
9 | 回文数 | Java | Easy | |
10 | 正则表达式匹配 | Java | Hard | 动态规划 |
11 | 盛最多水的容器 | Java | Medium | 双指针 |
12 | 整数转罗马数字 | Java | Medium | |
13 | 罗马数字转整数 | Java | Easy | |
14 | 最长公共前缀 | Java | Easy | |
15 | 三数之和 | Java | Medium | 双指针 |
17 | 电话号码的字母组合 | Java | Medium | |
19 | 删除链表的倒数第N个节点 | Java | Medium | |
20 | 有效的括号 | Java | Easy | |
21 | 合并两个有序链表 | Java | Easy | |
22 | 括号生成 | Java | Medium | 回溯搜索 |
23 | 合并K个排序链表 | Java | Hard | |
24 | 两两交换链表中的节点 | Java | Medium | |
25 | K 个一组翻转链表 | Java | Hard | |
26 | 删除排序数组中的重复项 | Java/Go | Easy | 双指针 |
27 | 移除元素 | Java | Easy | |
31 | 下一个排列 | Java | Medium | |
32 | 最长有效括号 | Java | Hard | 动态规划 |
33 | 搜索旋转排序数组 | Java | Medium | 二分查找 |
34 | 在排序数组中查找元素的第一个和最后一个位置 | Java | Medium | 二分查找 |
39 | 组合总和 | Java | Medium | 回溯搜索 |
40 | 组合总和 II | Java | Medium | 回溯搜索 |
42 | 接雨水 | Java | Hard | 双指针、单调栈 |
43 | 字符串相乘 | Java | Medium | |
45 | 跳跃游戏 II | Java | Hard | 贪心 |
46 | 全排列 | Java | Medium | 回溯搜索 |
47 | 全排列 II | Java | Medium | 回溯搜索 |
48 | 旋转图像 | Java | Medium | |
50 | Pow(x, n) | Java | Medium | 快速幂 |
51 | N皇后 | Java | Hard | 回溯搜索 |
53 | 最大子序和 | Java | Easy | 动态规划 |
54 | 螺旋矩阵 | Java | Medium | |
55 | 跳跃游戏 | Java | Medium | 逆推 |
56 | 合并区间 | Java | Medium | |
62 | 不同路径 | Java | Medium | 动态规划 |
64 | 最小路径和 | Java | Medium | 动态规划 |
65 | 有效数字 | Java | Hard | |
66 | 加一 | Java | Easy | |
67 | 二进制求和 | Java | Easy | |
69 | x 的平方根 | Java | Easy | 二分查找 |
70 | 爬楼梯 | Java | Easy | 动态规划 |
72 | 编辑距离 | Java | Hard | 动态规划 |
76 | 最小覆盖子串 | Java | Hard | 滑动窗口 |
78 | 子集 | Java | Medium | 回溯搜索 |
79 | 单词搜索 | Java | Medium | 回溯搜索 |
81 | 搜索旋转排序数组 II | Java | Medium | 二分查找 |
82 | 删除排序链表中的重复元素 II | Java | Medium | |
83 | 删除排序链表中的重复元素 | Java | Easy | |
84 | 柱状图中最大的矩形 | Java | Hard | 单调栈 |
86 | 分隔链表 | Java | Medium | |
88 | 合并两个有序数组 | Java | Easy | |
90 | 子集 II | Java | Medium | 回溯搜索 |
91 | 解码方法 | Java | Medium | 动态规划 |
93 | 复原IP地址 | Java | Medium | |
94 | 二叉树的中序遍历 | Java | Medium | |
96 | 不同的二叉搜索树 | Java | Medium | 动态规划 |
98 | 验证二叉搜索树 | Java | Medium | |
101 | 对称二叉树 | Java | Easy | |
102 | 二叉树的层次遍历 | Java | Medium | |
103 | 二叉树的锯齿形层次遍历 | Java | Medium | |
104 | 二叉树的最大深度 | Java | Easy | |
105 | 从前序与中序遍历序列构造二叉树 | Java | Medium | |
110 | 平衡二叉树 | Java | Easy | |
111 | 二叉树的最小深度 | Java | Easy | |
112 | 路径总和 | Java | Easy | |
113 | 路径总和 II | Java | Medium | |
120 | 三角形最小路径和 | Java | Medium | 动态规划 |
121 | 买卖股票的最佳时机 | Java | Easy | |
126 | 单词接龙 II | Java | Hard | 双向 BFS |
128 | 最长连续序列 | Java | Hard | |
130 | 被围绕的区域 | Java | Medium | DFS |
134 | 加油站 | Java | Medium | |
136 | 只出现一次的数字 | Java | Easy | 位运算 |
137 | 只出现一次的数字 II | Java | Medium | 位运算 |
138 | 复制带随机指针的链表 | Java | Medium | |
139 | 单词拆分 | Java | Medium | |
141 | 环形链表 | Java | Easy | 快慢指针 |
142 | 环形链表 II | Java | Medium | 快慢指针 |
144 | 二叉树的前序遍历 | Java | Medium | |
145 | 二叉树的后序遍历 | Java | Hard | |
146 | LRU 缓存机制 | Java | Medium | |
151 | 翻转字符串里的单词 | Java | Medium | |
152 | 乘积最大子数组 | Java | Meidum | 动态规划 |
153 | 寻找旋转排序数组中的最小值 | Java | Medium | 二分查找 |
154 | 寻找旋转排序数组中的最小值 II | Java | Hard | 二分查找 |
155 | 最小栈 | Java | Easy | |
160 | 相交链表 | Java | Easy | |
165 | 比较版本号 | java | Medium | |
169 | 多数元素 | Java | Easy | |
189 | 旋转数组 | Java | Easy | |
191 | 位1的个数 | Java | Easy | |
198 | 打家劫舍 | Java | Easy | |
199 | 二叉树的右视图 | Java | Medium | |
200 | 岛屿数量 | Java | Medium | 回溯搜索 |
202 | 快乐数 | Java | Easy | 快慢指针 |
206 | 反转链表 | Java | Easy | |
208 | 实现 Trie (前缀树) | Java | Medium | |
210 | 课程表 II | Java | Medium | 拓扑排序 |
213 | 打家劫舍 II | Java | Medium | |
215 | 数组中的第 K 个最大元素 | Java | Medium | 堆、快速排序 |
221 | 最大正方形 | Java | Medium | 动态规划 |
223 | 矩形面积 | Java | Medium | |
225 | 用队列实现栈 | Java | Easy | |
226 | 翻转二叉树 | Java | Easy | |
232 | 用栈实现队列 | Java | Easy | |
233 | 数字 1 的个数 | Java | Hard | |
234 | 回文链表 | Java | Easy | |
235 | 二叉搜索树的最近公共祖先 | Java | Easy | |
236 | 二叉树的最近公共祖先 | Java | Medium | |
238 | 除自身以外数组的乘积 | Java | Medium | |
239 | 滑动窗口最大值 | Java | Hard | 动态规划、双端队列 |
240 | 搜索二维矩阵 II | Java | Medium | |
260 | 只出现一次的数字 III | Java | Medium | 位运算 |
263 | 丑数 | Java | Easy | |
264 | 丑数 II | Java | Medium | 多路归并、堆、优先队列 |
279 | 完全平方数 | Java | Medium | 动态规划 |
283 | 移动零 | Java | Easy | |
287 | 寻找重复数 | Java | Medium | 二分查找 |
289 | 生命游戏 | Java | Medium | |
295 | 数据流的中位数 | Java | Hard | |
297 | 二叉树的序列化与反序列化 | Java | Hard | |
300 | 最长上升子序列 | Java | Medium | |
322 | 零钱兑换 | Java | Medium | |
337 | 打家劫舍 III | Java | Medium | |
338 | 比特位计数 | Java | Medium | |
343 | 整数拆分 | Java | Medium | |
344 | 反转字符串 | Java | Easy | |
347 | 前 K 个高频元素 | Java | Medium | |
355 | 设计推特 | Java | Medium | |
365 | 水壶问题 | Java | Medium | |
373 | 查找和最小的 K 对数字 | Go | Medium | 优先队列 |
384 | 打乱数组 | Java | Medium | |
394 | 字符串解码 | Java | Medium | 栈 |
400 | 第N个数字 | Java | Medium | |
409 | 最长回文串 | Java | Easy | |
410 | 分割数组的最大值 | Java | Hard | |
415 | 字符串相加 | Java | Easy | |
416 | 分割等和子集 | Java | Medium | 动态规划 |
445 | 两数相加 II | Java | Medium | |
460 | LFU缓存 | Java | Hard | |
466 | 统计重复个数 | Java | Hard | |
468 | 验证IP地址 | Java | Medium | |
509 | 斐波那契数 | Java | Easy | |
528 | 按权重随机选择 | C++ | Medium | 前缀和、二分查找 |
541 | 反转字符串 II | Java | Easy | |
542 | 01 矩阵 | Java | Medium | 动态规划 |
543 | 二叉树的直径 | Java | Easy | |
557 | 反转字符串中的单词 III | Java | Easy | |
560 | 和为K的子数组 | Java | Medium | 前缀和 |
572 | 另一个树的子树 | Java | Easy | |
641 | 设计循环双端队列 | Java | Medium | |
680 | 验证回文字符串 Ⅱ | Java | Easy | 双指针 |
695 | 岛屿的最大面积 | Java | Medium | |
700 | 二叉搜索树中的搜索 | Java | Easy | |
703 | 数据流中的第K大元素 | Java | Easy | |
709 | 转换成小写字母 | Java | Easy | |
739 | 每日温度 | Java | Medium | 单调栈 |
789 | 逃脱阻碍者 | C++ | Medium | |
781 | 森林中的兔子 | Go | Medium | 贪心 |
820 | 单词的压缩编码 | Java | Medium | |
837 | 新21点 | Java | Medium | 动态规划 |
860 | 柠檬水找零 | Java | Easy | |
876 | 链表的中间结点 | Java | Easy | |
887 | 鸡蛋掉落 | Java | Hard | 动态规划、二分查找 |
892 | 三维形体的表面积 | Java | Easy | |
896 | 单调数列 | Go | Easy | |
905 | 按奇偶排序数组 | Java | Easy | 双指针 |
912 | 排序数组 | Java | Medium | 排序算法 |
914 | 卡牌分组 | Java | Easy | |
922 | 按奇偶排序数组 II | Java | Easy | 双指针 |
945 | 使数组唯一的最小增量 | Java | Medium | |
946 | 验证栈序列 | Java | Medium | |
974 | 和可被 K 整除的子数组 | Java | Medium | 前缀和 |
983 | 最低票价 | Java | Medium | 动态规划 |
990 | 等式方程的可满足性 | Java | Medium | 并查集 |
994 | 腐烂的橘子 | Java | Easy | |
999 | 车的可用捕获量 | Java | Easy | |
1013 | 将数组分成和相等的三个部分 | Java | Easy | |
1071 | 字符串的最大公因子 | Java | Easy | |
1095 | 山脉数组中查找目标值 | Java | Hard | 二分查找 |
1103 | 分糖果 II | Java | Easy | |
1108 | IP 地址无效化 | Java | Easy | |
1109 | 航班预订统计 | C++ | Medium | 差分、前缀和 |
1111 | 有效括号的嵌套深度 | Java | Medium | |
1114 | 按序打印 | Java | Easy | |
1115 | 交替打印FooBar | Java | Medium | |
1143 | 最长公共子序列 | Java | Medium | 动态规划 |
1160 | 拼写单词 | Java | Easy | |
1162 | 地图分析 | Java | Medium | BFS |
1248 | 统计「优美子数组」 | Java | Medium | 滑动窗口 |
1371 | 每个元音包含偶数次的最长子字符串 | Java | Medium | 前缀和、位运算 |
1431 | 拥有最多糖果的孩子 | Java | Easy | |
1480 | 一维数组的动态和 | C++ | Easy | |
1629 | 按键持续时间最长的键 | Go | Easy | |
lcci-0107 | 旋转矩阵 | Java | Medium | |
lcci-0811 | 硬币 | Java | Medium | 动态规划 |
lcci-1001 | 合并排序的数组 | Java | Easy | |
lcci-1006 | 字符串压缩 | Java | Easy | |
lcci-1709 | 第 k 个数 | Java | Medium | |
lcci-1716 | 按摩师 | Java | Easy |