LeetCode总集合

LeetCode总集合

题目

此为自己有博客之后刷leetcode的总集合,已经好几年没刷了,总是断断续续的,毕竟懒狗。

序号1到399

序号 题目 解法 方法
1 两数之和 leetcode-2-1 哈希
3 无重复字符的最长子串 leetcode-3-3 滑动窗口
5 最长回文子串 leetcode-7-5 动态规划
6 Z 字形变换 leetcode-15-6
11 盛最多水的容器 leetcode-6-11 双指针
14 最长公共前缀 leetcode-8-14
15 三数之和 leetcode-6-15 双指针
17 电话号码的字母组合 leetcode-7-17 回溯法
18 四数之和 leetcode-9-18
19 删除链表的倒数第 N 个结点 leetcode-3-19 快慢指针
20 有效的括号 leetcode-4-20
21 合并两个有序链表 leetcode-4-21
22 括号生成 leetcode-7-22 回溯法
24 两两交换链表中的节点 leetcode-9-24
26 删除有序数组中的重复项 leetcode-2-26 双指针
27 移除元素 leetcode-8-27 双指针
28 实现 strStr() leetcode-8-28 kmp
33 搜索旋转排序数组 leetcode-5-33 二分法
34 在排序数组中查找元素的第一个和最后一个位置 leetcode-5-34 二分法
35 搜索插入位置 leetcode-2-35 二分法
36 有效的数独 leetcode-3-36
37 解数独 leetcode-11-37 回溯
38 外观数列 leetcode-1-38 递归
39 组合总和 leetcode-7-39 搜索回溯
40 组合总和 II leetcode-7-40
41 缺失的第一个正数 leetcode-18-41
42 接雨水 leetcode-4-42 动态、栈、双指针
43 字符串相乘 leetcode-15-43
45 跳跃游戏 II leetcode-7-45 贪心算法?
46 全排列 leetcode-2-46 dfs
47 全排列 II leetcode-2-47 dfs+剪枝
48 旋转图像 leetcode-8-48
50 Pow(x, n) leetcode-9-50
51 N 皇后 leetcode-11-51 回溯
53 最大子序和 leetcode-2-53 动态规划、贪心
54 螺旋矩阵 leetcode-9-54
55 跳跃游戏 leetcode-7-55 动态规划、双指针
56 合并区间 leetcode-8-56
59 螺旋矩阵 II leetcode-9-59
62 不同路径 leetcode-7-62
63 不同路径 II leetcode-12-63 动态规划
66 加一 leetcode-1-66
69 x 的平方根 leetcode-13-69 二分法
70 爬楼梯 leetcode-5-70 动态规划
71 简化路径 leetcode-12-71
72 编辑距离 leetcode-8-72 动态规划
73 矩阵置零 leetcode-3-73
74 搜索二维矩阵 leetcode-5-74 二分法
76 最小覆盖子串 leetcode-15-76 滑动窗口
77 组合 leetcode-4-77 回溯、字典
78 子集 leetcode-6-78 回溯、枚举
79 单词搜索 leetcode-7-79 回溯
80 删除有序数组中的重复项 II leetcode-16-80
82 删除排序链表中的重复元素 II leetcode-6-82 双指针
83 删除排序链表中的重复元素 leetcode-4-83
84 柱状图中最大的矩形 leetcode-13-84 单调栈
88 合并两个有序数组 leetcode-2-88 双指针
90 子集 II leetcode-6-90
91 解码方法 leetcode-7-91 动态规划
93 复原 IP 地址 leetcode-11-93 回溯
94 二叉树的中序遍历 leetcode-4-94 中序遍历
96 不同的二叉搜索树 leetcode-12-96 动态规划
98 验证二叉搜索树 leetcode-5-98
100 相同的树 leetcode-10-100
101 对称二叉树 leetcode-5-101
102 二叉树的层序遍历 leetcode-5-102
104 二叉树的最大深度 leetcode-5-104 dfs
105 从前序与中序遍历序列构造二叉树 leetcode-10-105
106 从中序与后序遍历序列构造二叉树 leetcode-10-106
107 二叉树的层序遍历 II leetcode-10-107
108 将有序数组转换为二叉搜索树 leetcode-11-108
110 平衡二叉树 leetcode-10-110
111 二叉树的最小深度 leetcode-10-111
112 路径总和 leetcode-5-112
113 路径总和 II leetcode-10-113
115 不同的子序列 leetcode-13-115 动态规划
116 填充每个节点的下一个右侧节点指针 leetcode-4-116
117 填充每个节点的下一个右侧节点指针 II leetcode-6-82
118 杨辉三角 leetcode-3-118
119 杨辉三角 II leetcode-8-119
120 三角形最小路径和 leetcode-5-120 动态规划
121 买卖股票的最佳时机 leetcode-2-121 双指针法
122 买卖股票的最佳时机 II leetcode-2-122 贪心
123 买卖股票的最佳时机 III leetcode-12-123 动态规划
127 单词接龙 leetcode-21-127
128 最长连续序列 leetcode-16-128 哈希表
130 被围绕的区域 leetcode-6-130 dfs
131 分割回文串 leetcode-11-131 回溯
134 加油站 leetcode-11-134 贪心
135 分发糖果 leetcode-11-135 贪心
136 只出现一次的数字 leetcode-3-136 位运算
139 单词拆分 leetcode-7-139 完全背包
141 环形链表 leetcode-4-141 快慢指针
142 环形链表 II leetcode-9-142
143 重排链表 leetcode-14-143
144 二叉树的前序遍历 leetcode-4-144 迭代、递归、morris
145 二叉树的后序遍历 leetcode-4-145
149 直线上最多的点数 leetcode-8-149
150 逆波兰表达式求值 leetcode-9-150
151 翻转字符串里的单词 leetcode-8-151
152 乘积最大子数组 leetcode-16-152
153 寻找旋转排序数组中的最小值 leetcode-5-153 二分法
154 寻找旋转排序数组中的最小值 II leetcode-16-offer-11
160 相交链表 leetcode-9-160
162 寻找峰值 leetcode-5-162
165 比较版本号 leetcode-16-165
167 两数之和 II – 输入有序数组 leetcode-2-167 双指针
169 多数元素 leetcode-1-169 哈希表、摩尔投票法
172 阶乘后的零 leetcode-18-172
173 二叉搜索树迭代器 leetcode-21-173
188 买卖股票的最佳时机 IV leetcode-12-188
189 旋转数组 leetcode-2-189 指针?
190 颠倒二进制位 leetcode-5-190 位运算、分治
191 位1的个数 leetcode-5-191 位运算
198 打家劫舍 leetcode-5-198 动态规划
199 二叉树的右视图 leetcode-10-199
200 岛屿数量 leetcode-6-200 dfs、bfs、并查集
201 数字范围按位与 leetcode-8-201
202 快乐数 leetcode-8-202 哈希、快慢指针
203 移除链表元素 leetcode-4-203
206 反转链表 leetcode-4-206 双指针?
208 实现 Trie (前缀树) leetcode-1-208 字典树
209 长度最小的子数组 leetcode-6-209 滑动窗口
211 添加与搜索单词 – 数据结构设计 leetcode-1-211 map、字典树+dfs
213 打家劫舍 II leetcode-7-213 动态规划
215 数组中的第K个最大元素 leetcode-21-215
216 组合总和 III leetcode-11-216 回溯
217 存在重复元素 leetcode-2-217 哈希表
219 存在重复元素 II leetcode-14-219
222 完全二叉树的节点个数 leetcode-10-222
225 用队列实现栈 leetcode-9-225
226 翻转二叉树 leetcode-5-226
228 汇总区间 leetcode-12-228
229 多数元素 II leetcode-1-229 哈希表、摩尔投票法
230 二叉搜索树中第K小的元素 leetcode-1-230 中序遍历
231 2 的幂 leetcode-2-231 位运算
232 用栈实现队列 leetcode-4-232
235 二叉搜索树的最近公共祖先 leetcode-5-235
236 二叉树的最近公共祖先 leetcode-10-236
237 删除链表中的节点 leetcode-4-237
239 滑动窗口最大值 leetcode-9-239 单调队列
240 搜索二维矩阵 II leetcode-2-240
242 有效的字母异位词 leetcode-3-242
257 二叉树的所有路径 leetcode-10-257
258 各位相加 leetcode-15-258
260 只出现一次的数字 III leetcode-3-260 哈希、位运算
263 丑数 leetcode-12-263
268 丢失的数字 leetcode-5-268 哈希、位运算、数学
278 第一个错误的版本 leetcode-2-278 二分法
279 完全平方数 leetcode-12-279 完全背包
283 移动零 leetcode-2-283 单指针
290 单词规律 leetcode-13-290 双射
299 猜数字游戏 leetcode-5-299
300 最长递增子序列 leetcode-7-300
307 区域和检索 – 数组可修改 leetcode-19-307
309 最佳买卖股票时机含冷冻期 leetcode-12-309 动态规划
310 最小高度树 leetcode-19-310 dfs
318 最大单词长度乘积 leetcode-7-318
319 灯泡开关 leetcode-6-319 数学
322 零钱兑换 leetcode-8-322 完全背包
332 重新安排行程 leetcode-11-332 回溯法
337 打家劫舍 III leetcode-12-337 动态规划
334 递增的三元子序列 leetcode-12-334 贪心
343 整数拆分 leetcode-8-343
344 反转字符串 leetcode-3-344 双指针
347 前 K 个高频元素 leetcode-9-347 优先队列
349 两个数组的交集 leetcode-3-349
350 两个数组的交集 II leetcode-3-350 排序、哈希
357 统计各位数字都不同的数字个数 leetcode-3-357
367 有效的完全平方数 leetcode-4-367
372 超级次方 leetcode-9-372
374 猜数字大小 leetcode-6-374 二分法
375 猜数字大小 II leetcode-6-375 二维动态规划
376 摆动序列 leetcode-11-376
377 组合总和 Ⅳ leetcode-12-377 完全背包
380 O(1) 时间插入、删除和获取随机元素 [leetcode-19-offer-II-030](https://szx.life/leetcode-19/#offer-ii-030-插入、删除和随机访问都是 O(1) 的容器)
382 链表随机节点 leetcode-12-382
383 赎金信 leetcode-3-383
384 打乱数组 leetcode-7-384 随机
386 字典序排数 leetcode-20-386
387 字符串中的第一个唯一字符 leetcode-3-387
388 文件的最长绝对路径 leetcode-20-388
390 消除游戏 leetcode-11-390
392 判断子序列 leetcode-13-392
396 旋转函数 leetcode-20-396
397 整数替换 leetcode-13-397
398 随机数索引 leetcode-20-398

序号400到999

序号 题目 解法 方法
400 第 N 位数字 leetcode-8-400
404 左叶子之和 leetcode-10-404
405 数字转换为十六进制数 leetcode-16-405
406 根据身高重建队列 leetcode-11-406 贪心
407 接雨水 II leetcode-4-407
413 等差数列划分 leetcode-7-413 动态规划
415 字符串相加 leetcode-15-415
416 分割等和子集 leetcode-12-416 背包
417 太平洋大西洋水流问题 leetcode-20-417
423 从英文中重建数字 leetcode-7-423
427 建立四叉树 leetcode-21-427 深度优先
429 N 叉树的层序遍历 leetcode-10-429
433 最小基因变化 leetcode-21-433
434 字符串中的单词数 leetcode-21-434
435 无重叠区间 leetcode-17-435
436 寻找右区间 leetcode-22-436
438 找到字符串中所有字母异位词 leetcode-6-438 滑动窗口
441 排列硬币 leetcode-1-441 二分法、数学推导
442 数组中重复的数据 leetcode-21-442
450 删除二叉搜索树中的节点 leetcode-10-450
452 用最少数量的箭引爆气球 leetcode-11-452 贪心
453 最小操作次数使数组元素相等 leetcode-1-453 反向思考
454 四数相加 II leetcode-9-454
455 分发饼干 leetcode-11-455 贪心
459 重复的子字符串 leetcode-9-459
462 最少移动次数使数组元素相等 II leetcode-21-462
467 环绕字符串中唯一的子字符串 leetcode-22-467
468 验证IP地址 leetcode-23-468
473 火柴拼正方形 leetcode-23-473
474 一和零 leetcode-12-474 背包01
476 数字的补数 leetcode-1-476 类同1009
478 在圆内随机生成点 leetcode-23-478
482 密钥格式化 leetcode-1-482
485 最大连续 1 的个数 leetcode-8-485
491 递增子序列 leetcode-11-491 回溯
492 构造矩形 leetcode-2-492
494 目标和 leetcode-12-494 背包
495 提莫攻击 leetcode-6-495
496 下一个更大元素 I leetcode-2-496 单调栈
497 非重叠矩形中的随机点 leetcode-23-497
498 对角线遍历 leetcode-8-498
500 键盘行 leetcode-3-500
501 二叉搜索树中的众数 leetcode-10-501
503 下一个更大元素 II leetcode-13-503 单调栈
504 七进制数 leetcode-15-504
506 相对名次 leetcode-8-506
507 完美数 leetcode-11-507
509 斐波那契数 leetcode-12-509 动态规划
513 找树左下角的值 leetcode-10-513
515 在每个树行中找最大值 leetcode-10-515
516 最长回文子序列 leetcode-13-516
518 零钱兑换 II leetcode-12-518 完全背包
519 随机翻转矩阵 leetcode-8-519 随机
520 检测大写字母 leetcode-6-520
521 最长特殊序列 Ⅰ leetcode-15-521
525 连续数组 leetcode-16-525
530 二叉搜索树的最小绝对差 leetcode-10-530
537 复数乘法 leetcode-14-537
538 把二叉搜索树转换为累加树 leetcode-11-538
540 有序数组中的单一元素 leetcode-13-540
541 反转字符串 II leetcode-3-541
542 01 矩阵 leetcode-4-542 dfs和动态
547 省份数量 leetcode-6-547 dfs、bfs、并查集
553 最优除法 leetcode-14-553
557 反转字符串中的单词 III leetcode-3-557 双指针
559 N 叉树的最大深度 leetcode-7-559 dfs、bfs
561 数组拆分 I leetcode-8-561
566 重塑矩阵 leetcode-3-566
567 字符串的排列 leetcode-3-567
572 另一棵树的子树 leetcode-6-572
575 分糖果 leetcode-3-575 哈希
576 出界的路径数 leetcode-15-576 动态规划
583 两个字符串的删除操作 leetcode-7-583 二维dp
589 N 叉树的前序遍历 leetcode-16-589
590 N 叉树的后序遍历 leetcode-16-590
594 最长和谐子序列 leetcode-7-594 哈希
598 范围求和 II leetcode-5-598
599 两个列表的最小索引总和 leetcode-16-599
606 根据二叉树创建字符串 leetcode-17-606
617 合并二叉树 leetcode-4-617 dfs
637 二叉树的层平均值 leetcode-10-637
638 大礼包 leetcode-2-638 dfs
647 回文子串 leetcode-13-647 动态规划
648 单词替换 leetcode-15-648
653 两数之和 IV – 输入 BST leetcode-5-653
654 最大二叉树 leetcode-10-655
658 找到 K 个最接近的元素 leetcode-14-658
661 图片平滑器 leetcode-17-661
668 乘法表中第k小的数 leetcode-22-668
669 修剪二叉搜索树 leetcode-11-669
673 最长递增子序列的个数 leetcode-7-673 动态规划
674 最长连续递增序列 leetcode-12-674 动态规划
677 键值映射 leetcode-6-677 哈希、字典树
682 棒球比赛 leetcode-18-682
686 重复叠加字符串匹配 leetcode-10-686 KMP
688 骑士在棋盘上的概率 leetcode-14-688 动态规划
693 交替位二进制数 leetcode-18-693
695 岛屿的最大面积 leetcode-3-695 广度和深度
700 二叉搜索树中的搜索 leetcode-5-700
701 二叉搜索树中的插入操作 leetcode-5-701
704 二分查找 leetcode-2-704 二分查找
707 设计链表 leetcode-8-707
709 转换成小写字母 leetcode-9-709
713 乘积小于K的子数组 leetcode-6-713
714 买卖股票的最佳时机含手续费 leetcode-12-714 贪心、动态
717 1比特与2比特字符 leetcode-14-717
718 最长重复子数组 leetcode-12-718 动态规划
720 词典中最长的单词 leetcode-16-720 字典树
724 寻找数组的中心下标 leetcode-8-724
728 自除数 leetcode-18-728
733 图像渲染 leetcode-3-733 广度和深度
738 单调递增的数字 leetcode-12-738 贪心
739 每日温度 leetcode-13-739 单调栈
743 网络延迟时间 leetcode-16-743 dijkstra
744 寻找比目标字母大的最小字母 leetcode-19-744 二分法
746 使用最小花费爬楼梯 leetcode-12-746 动归
747 至少是其他数字两倍的最大数 leetcode-12-747
762 二进制表示中质数个计算置位 leetcode-19-762
763 划分字母区间 leetcode-17-763 贪心
780 到达终点 leetcode-19-780 反向、辗转相除
784 字母大小写全排列 leetcode-4-784 回溯
785 判断二分图 leetcode-21-785
786 第 K 个最小的素数分数 leetcode-8-786
794 有效的井字游戏 leetcode-9-794
796 旋转字符串 leetcode-19-796
797 所有可能的路径 leetcode-6-797 回溯
804 唯一摩尔斯密码词 leetcode-19-804
806 写字符串需要的行数 leetcode-19-806
807 保持城市天际线 leetcode-9-807
812 最大三角形面积 leetcode-21-812
819 最常见的单词 leetcode-20-819
821 字符的最短距离 leetcode-20-821
824 山羊拉丁文 leetcode-20-824
825 适龄的朋友 leetcode-11-825 双指针
829 连续整数求和 leetcode-23-829
838 推多米诺 leetcode-14-838 双指针
839 相似字符串组 leetcode-21-839
844 比较含退格的字符串 leetcode-6-844 双指针
846 一手顺子 leetcode-11-846
852 山脉数组的峰顶索引 leetcode-1-852 二分法
859 亲密字符串 leetcode-7-859
860 柠檬水找零 leetcode-11-860 贪心
864 二进制间距 leetcode-20-864
869 重新排序得到 2 的幂 leetcode-2-869 哈希、搜索回溯
875 爱吃香蕉的珂珂 leetcode-23-875
876 链表的中间结点 leetcode-3-876 快慢指针
883 三维形体投影面积 leetcode-20-883
884 两句话中的不常见单词 leetcode-13-884 哈希表
890 查找和替换模式 leetcode-23-890
905 按奇偶排序数组 leetcode-20-905
908 最小差值 I leetcode-20-908
911 在线选举 leetcode-9-911 二分法
912 排序数组 leetcode-排序算法
917 仅仅反转字母 leetcode-14-917
926 将字符串翻转到单调递增 leetcode-23-926
929 独特的电子邮件地址 leetcode-23-929
933 最近的请求次数 leetcode-21-933
942 增减字符串匹配 leetcode-21-942
944 删列造序 leetcode-21-944
954 二倍数对数组 leetcode-19-954
961 在长度 2N 的数组中找出重复 N 次的元素 leetcode-22-961
965 单值二叉树 leetcode-22-965
968 监控二叉树 leetcode-12-968 贪心
969 煎饼排序 leetcode-14-969
977 有序数组的平方 leetcode-2-977 双指针法
986 区间列表的交集 leetcode-6-986 双指针
991 坏了的计算器 leetcode-19-991
994 腐烂的橘子 leetcode-4-994

序号1000后

序号 题目 解法 方法
1004 最大连续1的个数 III leetcode-18-1004
1005 K 次取反后最大化的数组和 leetcode-8-1005
1009 十进制整数的反码 leetcode-1-476
1013 将数组分成和相等的三个部分 leetcode-14-1013
1016 子串能表示从 1 到 N 数字的二进制串 leetcode-14-1016
1020 飞地的数量 leetcode-13-1020 dfs
1021 删除最外层的括号 leetcode-13-1021
1022 从根到叶的二进制数之和 leetcode-23-1020
1035 不相交的线 leetcode-13-1035 动态规划
1037 有效的回旋镖 leetcode-23-1037
1038 把二叉搜索树转换为累加树 leetcode-11-538
1046 最后一块石头的重量 leetcode-14-1046 最大堆
1047 删除字符串中的所有相邻重复项 leetcode-9-1047
1049 最后一块石头的重量 II leetcode-12-1049 背包01
1078 Bigram 分词 leetcode-11-1078
1091 二进制矩阵中的最短路径 leetcode-7-1091 BFS
1128 等价多米诺骨牌对的数量 leetcode-15-1128
1143 最长公共子序列 leetcode-7-1143 二维dp
1154 一年中的第几天 leetcode-10-1154
1185 一周中的第几天 leetcode-15-1184
1189 “气球” 的最大数量 leetcode-13-1189
1218 最长定差子序列 leetcode-4-1218 动态规划
1219 黄金矿工 leetcode-13-1219 dfs
1287 有序数组中出现次数超过25%的元素 leetcode-15-1287
1305 两棵二叉搜索树中的所有元素 leetcode-21-1305
1332 删除回文子序列 leetcode-13-1332
1342 将数字变成 0 的操作次数 leetcode-13-1342
1380 矩阵中的幸运数 leetcode-13-1380
1394 找出数组中的幸运数 leetcode-14-1394 哈希
1401 圆和矩形是否有重叠 leetcode-15-1401
1402 做菜顺序 leetcode-15-1402
1405 最长快乐字符串 leetcode-13-1405
1409 查询带键的排列 leetcode-15-1409
1414 和为 K 的最少斐波那契数字数目 leetcode-13-1414
1436 旅行终点站 leetcode-15-1436
1446 连续字符 leetcode-8-1446
1447 最简分数 leetcode-13-1447
1470 重新排列数组 leetcode-14-1470 位运算
1477 找两个和为目标值且不重叠的子数组 leetcode-15-1477
1503 所有蚂蚁掉下来前的最后一刻 leetcode-15-1503
1576 替换所有的问号 leetcode-11-1576
1588 所有奇数长度子数组的和 leetcode-16-1588
1606 找到处理最多请求的服务器 leetcode-18-1606
1609 奇偶树 leetcode-10-1609
1672 最富有客户的资产总量 leetcode-20-1672
1685 有序数组中差绝对值之和 leetcode-15-1685
1688 比赛中的配对次数 leetcode-14-1688
1705 吃苹果的最大数目 leetcode-10-1705 贪心+优先队列
1706 球会落何处 leetcode-14-1706
1712 将数组分成三个子数组的方案数 leetcode-16-1712
1716 计算力扣银行的钱 leetcode-12-1716
1725 可以形成最大正方形的矩形数目 leetcode-13-1725
1748 唯一元素的和 leetcode-13-1748
1754 构造字典序最大的合并字符串 leetcode-16-1754
1763 最长的美好子字符串 leetcode-13-1763
1765 地图中的最高点 leetcode-13-1765 多源BFS
1780 判断一个数字是否可以表示成三的幂的和 leetcode-15-1780
1791 找出星型图的中心节点 leetcode-14-1791
1816 截断句子 leetcode-9-1816
1823 找出游戏的获胜者 leetcode-21-1823
1835 所有数对按位与结果的异或和 leetcode-14-1835
1848 到目标元素的最小距离 leetcode-15-1848
1856 子数组最小乘积的最大值 leetcode-15-1856
1910 删除一个字符串中所有出现的给定子字符串 leetcode-14-1910
1979 找出数组的最大公约数 leetcode-14-1979
1984 学生分数的最小差值 leetcode-13-1984
1985 找出数组中的第 K 大整数 leetcode-14-1985
1991 找到数组的中间位置 leetcode-8-1991
1995 统计特殊四元组 leetcode-11-1995 哈希表
1996 游戏中弱角色的数量 leetcode-13-1996
2000 反转单词前缀 leetcode-13-2000
2006 差的绝对值为 K 的数对数目 leetcode-13-2006
2001 可互换矩形的组数 leetcode-14-2001
2013 检测正方形 leetcode-14-2013
2016 增量元素之间的最大差值 leetcode-14-2016
2022 将一维数组转变成二维数组 leetcode-11-2022
2024 考试的最大困扰度 leetcode-18-2024
2038 如果相邻两个颜色均相同则删除当前颜色 leetcode-17-2038
2039 网络空闲的时刻 leetcode-17-2039
2043 简易银行系统 leetcode-17-2043
2044 统计按位或能得到最大值的子集数目 leetcode-16-2044
2047 句子中的有效单词数 leetcode-14-2047
2049 统计最高分的节点数目 leetcode-16-2049 dfs
2055 蜡烛之间的盘子 leetcode-16-2055 前缀和
2075 解码斜向换位密码 leetcode-14-2075
2100 适合打劫银行的日子 leetcode-15-2100
2104 子数组范围和 leetcode-15-2104
2108 找出数组中的第一个回文字符串 leetcode-15-2108
2140 解决智力问题 leetcode-15-2140 动态规划
2177 找到和为给定整数的三个连续整数 leetcode-16-2177
5203 统计可以提取的工件 leetcode-16-5203
5227 K 次操作后最大化顶端元素 leetcode-16-5227
6016 Excel 表中某个范围内的单元格 leetcode-15-6016
6017 向数组中追加 K 个整数 leetcode-15-6017
6018 根据描述创建二叉树 leetcode-15-6018 哈希表
6019 替换数组中的非互质数 leetcode-15-6019
6027 统计数组中峰和谷的数量 leetcode-17-6027 贪心
6028 统计道路上的碰撞次数 leetcode-17-6028
6029 射箭比赛中的最大得分 leetcode-17-6029 回溯
6031 找出数组中的所有 K 近邻下标 leetcode-16-6031

剑指Offer

序号 题目 解法 方法
03 数组中重复的数字 leetcode-16-offer-03
04 二维数组中的查找 leetcode-16-offer-04
05 替换空格 leetcode-9-offer-05 双指针
06 从尾到头打印链表 leetcode-16-offer-06
07 重建二叉树 leetcode-16-offer-07
09 用两个栈实现队列 leetcode-16-offer-09
10 斐波那契数列 leetcode-16-offer-10
10 II 青蛙跳台阶问题 leetcode-16-offer-10-II 动态规划
11 旋转数组的最小数字 leetcode-16-offer-11 二分法
12 矩阵中的路径 leetcode-17-offer-12 回溯
13 机器人的运动范围 leetcode-17-offer-13 回溯
14 剪绳子 leetcode-17-offer-14
15 二进制中1的个数 leetcode-17-offer-15
16 数值的整数次方 leetcode-17-offer-16
17 打印从1到最大的n位数 leetcode-17-offer-17
18 删除链表的节点 leetcode-17-offer-18
19 正则表达式匹配 leetcode-17-offer-19 动态规划
20 表示数值的字符串 leetcode-17-offer-20
21 调整数组顺序使奇数位于偶数前面 leetcode-17-offer-21
22 链表中倒数第k个节点 leetcode-17-offer-22
24 反转链表 leetcode-4-206
25 合并两个排序的链表 leetcode-4-21
26 树的子结构 leetcode-17-offer-26
27 二叉树的镜像 leetcode-5-226
28 对称的二叉树 leetcode-5-101
29 顺时针打印矩阵 leetcode-9-54
30 包含min函数的栈 leetcode-17-offer-30
31 栈的压入、弹出序列 leetcode-17-offer-31
32 I 从上到下打印二叉树 leetcode-17-offer-32-I
32 II 从上到下打印二叉树 II leetcode-5-102
32 III 从上到下打印二叉树 III leetcode-17-offer-32-III
33 二叉搜索树的后序遍历序列 leetcode-17-offer-33
34 二叉树中和为某一值的路径 leetcode-17-offer-34
35 复杂链表的复制 leetcode-17-offer-35
36 二叉搜索树与双向链表 leetcode-17-offer-36
37 序列化二叉树 leetcode-17-offer-37
38 字符串的排列 leetcode-17-offer-38
39 数组中出现次数超过一半的数字 leetcode-17-offer-39
40 最小的k个数 leetcode-17-offer-40
41 数据流中的中位数 leetcode-17-offer-41
42 连续子数组的最大和 leetcode-2-53
43 1~n 整数中 1 出现的次数 leetcode-18-offer-43
44 数字序列中某一位的数字 leetcode-18-offer-44
45 把数组排成最小的数 leetcode-18-offer-45
46 把数字翻译成字符串 leetcode-18-offer-46
47 礼物的最大价值 leetcode-14-offer-47
48 最长不含重复字符的子字符串 leetcode-3-3
49 丑数 leetcode-18-offer-49
50 第一个只出现一次的字符 leetcode-18-offer-50
51 数组中的逆序对 leetcode-18-offer-51
52 两个链表的第一个公共节点 leetcode-9-160
53 I 在排序数组中查找数字 I leetcode-18-offer-53-I
53 II 0~n-1中缺失的数字 leetcode-18-offer-53-II
54 二叉搜索树的第k大节点 leetcode-18-offer-54
55 I 二叉树的深度 leetcode-5-104
55 II 平衡二叉树 leetcode-10-110
56 I 数组中数字出现的次数 leetcode-18-offer-56-I
56 II 数组中数字出现的次数 II leetcode-18-offer-56-II
57 I 和为s的两个数字 leetcode-18-offer-57
57 II 和为s的连续正数序列 leetcode-18-offer-57-II
58 I 翻转单词顺序 leetcode-8-151
58 II 左旋转字符串 leetcode-9-offer-58-II
59 I 滑动窗口的最大值 leetcode-9-239
59 II 队列的最大值 leetcode-18-offer-59-II
60 n个骰子的点数 leetcode-18-offer-60
61 扑克牌中的顺子 leetcode-18-offer-61
62 圆圈中最后剩下的数字 leetcode-18-offer-62
63 股票的最大利润 leetcode-2-121
64 求1+2+…+n leetcode-18-offer-64
65 不用加减乘除做加法 leetcode-18-offer-65
66 构建乘积数组 leetcode-18-offer-66
67 把字符串转换成整数 leetcode-14-offer-67
68 I 二叉搜索树的最近公共祖先 leetcode-5-235
68 II 二叉树的最近公共祖先 leetcode-10-236

剑指II

序号 题目 解法 方法
001 整数除法 leetcode-18-offer-II-001
002 二进制加法 leetcode-18-offer-II-002
003 前 n 个数字二进制中 1 的个数 leetcode-18-offer-II-003
004 只出现一次的数字 leetcode-18-offer-II-004
005 单词长度的最大乘积 leetcode-18-offer-II-005
006 排序数组中两个数字之和 leetcode-18-offer-II-006
007 数组中和为 0 的三个数 leetcode-6-15 滑动窗口
008 和大于等于 target 的最短子数组 leetcode-6-209 滑动窗口
009 乘积小于 K 的子数组 leetcode-6-713 滑动窗口
010 和为 k 的子数组 leetcode-18-offer-II-010 前缀和+哈希表
011 0 和 1 个数相同的子数组 leetcode-16-525 前缀和+哈希表
012 左右两边子数组的和相等 leetcode-15-offer-II-12 前缀和
013 二维子矩阵的和 leetcode-18-offer-II-013
014 字符串中的变位词 leetcode-3-567 滑动窗口
015 字符串中的所有变位词 leetcode-6-438
016 不含重复字符的最长子字符串 leetcode-3-3 滑动窗口
017 含有所有字符的最短字符串 leetcode-15-76 滑动窗口
018 有效的回文 leetcode-19-offer-II-018
019 验证回文字符串 Ⅱ leetcode-19-offer-II-019
020 回文子字符串的个数 leetcode-13-647
021 删除链表的倒数第 n 个结点 leetcode-3-19
022 链表中环的入口节点 leetcode-9-142
023 两个链表的第一个重合节点 leetcode-9-160
024 反转链表 leetcode-4-206
025 链表中的两数相加 leetcode-19-offer-II-025
026 重排链表 leetcode-14-143 典中典
027 回文链表 leetcode-19-offer-II-027
028 展平多级双向链表 leetcode-19-offer-II-028
029 排序的循环链表 leetcode-19-offer-II-029
030 插入、删除和随机访问都是 O(1) 的容器 [leetcode-19-offer-II-030](https://szx.life/leetcode-19/#offer-ii-030-插入、删除和随机访问都是 O(1) 的容器)
031 最近最少使用缓存 leetcode-19-offer-II-031
032 有效的变位词 leetcode-19-offer-II-032
033 变位词组 leetcode-19-offer-II-033
034 外星语言是否排序 leetcode-19-offer-II-034
035 最小时间差 leetcode-19-offer-II-035
036 后缀表达式 leetcode-9-150
037 小行星碰撞 leetcode-19-offer-II-037
038 每日温度 leetcode-13-739
039 直方图最大矩形面积 leetcode-13-84
040 矩阵中最大的矩形 leetcode-19-offer-II-040
041 滑动窗口的平均值 leetcode-19-offer-II-041
042 最近请求次数 leetcode-19-offer-II-042
043 往完全二叉树添加节点 leetcode-19-offer-II-043
044 二叉树每层的最大值 leetcode-10-515
045 二叉树最底层最左边的值 leetcode-10-513
046 二叉树的右侧视图 leetcode-10-199
047 二叉树剪枝 leetcode-19-offer-II-047
048 序列化与反序列化二叉树 leetcode-17-offer-37
049 从根节点到叶节点的路径数字之和 leetcode-19-offer-II-049
050 向下的路径节点之和 leetcode-19-offer-II-050 树前缀和
051 节点之和最大的路径 leetcode-19-offer-II-051
052 展平二叉搜索树 leetcode-19-offer-II-052
053 二叉搜索树中的中序后继 leetcode-19-offer-II-053
054 所有大于等于节点的值之和 leetcode-11-538
055 二叉搜索树迭代器 leetcode-19-offer-II-055
056 二叉搜索树中两个节点之和 leetcode-5-653
057 值和下标之差都在给定的范围内 leetcode-20-offer-II-057
058 日程表 leetcode-20-offer-II-058
059 数据流的第 K 大数值 leetcode-20-offer-II-059
060 出现频率最高的 k 个数字 leetcode-9-347
061 和最小的 k 个数对 leetcode-20-offer-II-061
062 实现前缀树 leetcode-1-208
063 替换单词 leetcode-15-648
064 神奇的字典 leetcode-20-offer-II-064
065 最短的单词编码 leetcode-20-offer-II-065
066 单词之和 leetcode-6-677
067 最大的异或 leetcode-20-offer-II-067
068 查找插入位置 leetcode-2-35
069 山峰数组的顶部 leetcode-20-offer-II-069
070 排序数组中只出现一次的数字 leetcode-13-540
071 按权重生成随机数 leetcode-20-offer-II-071
072 求平方根 leetcode-13-69
073 狒狒吃香蕉 leetcode-20-offer-II-073
074 合并区间 leetcode-8-56
075 数组相对排序 leetcode-20-offer-II-075
076 数组中的第 k 大的数字 leetcode-20-offer-II-076
077 链表排序 leetcode-20-offer-II-077
078 合并排序链表 leetcode-20-offer-II-078
079 所有子集 leetcode-6-78
080 含有 k 个元素的组合 leetcode-4-77
081 允许重复选择元素的组合 leetcode-7-39
082 含有重复元素集合的组合 leetcode-7-40
083 没有重复元素集合的全排列 leetcode-2-46
084 含有重复元素集合的全排列 leetcode-2-47
085 生成匹配的括号 leetcode-7-22
086 分割回文子字符串 leetcode-11-131
087 复原 IP leetcode-11-93
088 爬楼梯的最少成本 leetcode-12-746
089 房屋偷盗 leetcode-5-198
090 环形房屋偷盗 leetcode-7-213
091 粉刷房子 leetcode-20-offer-II-091
092 翻转字符 leetcode-20-offer-II-092
093 最长斐波那契数列 leetcode-20-offer-II-093
094 最少回文分割 leetcode-20-offer-II-094
095 最长公共子序列 leetcode-7-1143
096 字符串交织 leetcode-20-offer-II-096
097 子序列的数目 leetcode-13-115
098 路径的数目 leetcode-7-62
099 最小路径之和 leetcode-21-offer-II-099
100 三角形中最小路径之和 leetcode-5-120
101 分割等和子集 leetcode-12-416
102 加减的目标值 leetcode-12-494
103 最少的硬币数目 leetcode-8-322
104 排列的数目 leetcode-12-377
105 岛屿的最大面积 leetcode-3-695
106 二分图 leetcode-21-785
107 矩阵中的距离 leetcode-4-542
108 单词演变 leetcode-21-127
109 开密码锁 leetcode-21-offer-II-109
110 所有路径 leetcode-6-797
111 计算除法 leetcode-21-offer-II-111
112 最长递增路径 leetcode-21-offer-II-112
113 课程顺序 leetcode-21-offer-II-113
114 外星文字典 leetcode-21-offer-II-114 拓扑排序
115 重建序列 leetcode-21-offer-II-115
116 省份数量 leetcode-6-547
117 相似的字符串 leetcode-21-839
118 多余的边 leetcode-21-offer-II-118
119 最长连续序列 leetcode-16-128

程序员面试金典

序号 题目 解法 方法
01.01 判定字符是否唯一 leetcode-21-面试-0101 位运算
01.02 判定是否互为字符重排 leetcode-21-面试-0102
01.03 URL化 leetcode-21-面试-0103 api
01.04 回文排列 leetcode-21-面试-0104 哈希
01.05 一次编辑 leetcode-21-面试-0105
01.06 字符串压缩 leetcode-21-面试-0106
01.07 旋转矩阵 leetcode-8-48
01.08 零矩阵 leetcode-21-面试-0108
01.09 字符串轮转 leetcode-21-面试-0109
02.01 移除重复节点 leetcode-21-面试-0201
02.02 返回倒数第 k 个节点 leetcode-21-面试-0202
02.03 删除中间节点 leetcode-21-面试-0203
0204 分割链表 leetcode-21-面试-0204
0205 链表求和 leetcode-21-面试-0205
0206 回文链表 leetcode-19-offer-II-027
0207 链表相交 leetcode-9-160
0208 链表中环的入口节点 leetcode-9-142
0301 三合一 leetcode-21-面试-0301
0302 栈的最小值 leetcode-21-面试-0302
0303 堆盘子 leetcode-21-面试-0303
0304 化栈为队 leetcode-22-面试-0304
0305 栈排序 leetcode-22-面试-0305
0306 动物收容所 leetcode-22-面试-0306
0401 节点间通路 leetcode-22-面试-0401
0402 最小高度树 leetcode-22-面试-0402
0403 特定深度节点链表 leetcode-22-面试-0403
0404 检查平衡性 leetcode-22-面试-0404
0405 合法二叉搜索树 leetcode-22-面试-0405
0406 后继者 leetcode-22-面试-0406
0408 首个共同祖先 leetcode-22-面试-0408
0409 二叉搜索树序列 leetcode-22-面试-0409
0410 检查子树 leetcode-22-面试-0410
0412 求和路径 leetcode-22-面试-0412
0501 插入 leetcode-22-面试-0501
0502 二进制数转字符串 leetcode-22-面试-0502
0503 翻转数位 leetcode-22-面试-0503
0504 下一个数 leetcode-22-面试-0504
0506 整数转换 leetcode-22-面试-0506
0507 配对交换 leetcode-22-面试-0507
0508 绘制直线 leetcode-22-面试-0508
0801 三步问题 leetcode-22-面试-0801
0802 迷路的机器人 leetcode-22-面试-0802
0803 魔术索引 leetcode-22-面试-0803
0804 幂集 leetcode-22-面试-0804
0805 递归乘法 leetcode-22-面试-0805
0806 汉诺塔问题 leetcode-22-面试-0806
0807 无重复字符串的排列组合 leetcode-22-面试-0807
0808 有重复字符串的排列组合 leetcode-22-面试-0808
0809 括号 leetcode-7-22
0810 颜色填充 [leetcode-22-面试-0810](https://szx.life/leetcode-22/#面试-0810- 颜色填充)
0811 硬币 [leetcode-22-面试-0811](https://szx.life/leetcode-22/#面试-0811- 硬币)
0812 八皇后 leetcode-11-51
0813 堆箱子 leetcode-22-面试-0813
0814 布尔运算 leetcode-22-面试-0814
1001 合并排序的数组 leetcode-22-面试-1001
1002 变位词组 leetcode-22-面试-1002
1003 搜索旋转数组 leetcode-22-面试-1003
1005 稀疏数组搜索 leetcode-22-面试-1005
1009 排序矩阵查找 leetcode-22-面试-1009
1010 数字流的秩 leetcode-22-面试-1010
1011 峰与谷 leetcode-22-面试-1011
1601 交换数字 leetcode-23-面试-1601
1602 单词频率 leetcode-23-面试-1602
1603 交点 leetcode-23-面试-1603
1604 井字游戏 leetcode-23-面试-1604
1605 阶乘尾数 leetcode-23-面试-1605
1606 最小差 leetcode-23-面试-1606
1607 最大数值 leetcode-23-面试-1607
1608 整数的英语表示 leetcode-23-面试-1608
1610 生存人数 leetcode-23-面试-1610
1611 跳水板 leetcode-23-面试-1611
1613 平分正方形 leetcode-23-面试-1613
1614 最佳直线 leetcode-23-面试-1614
1615 珠玑妙算 leetcode-23-面试-1615
1616 部分排序 leetcode-23-面试-1616
1617 连续数列 leetcode-23-面试-1617
1619 水域大小 leetcode-23-面试-1619
1620 T9键盘 leetcode-23-面试-1620
1621 交换和 leetcode-23-面试-1621
1622 兰顿蚂蚁 leetcode-23-面试-1622
1624 数对和 leetcode-23-面试-1624
1625 LRU 缓存 leetcode-23-面试-1625
1626 计算器 leetcode-23-面试-1626
1711 单词距离 leetcode-23-面试-1711

其他

序号 题目 解法 方法
银联01 回文链表 leetcode-16-银联01
银联03 理财产品 leetcode-16-银联03

需要回顾的题目

全排列46和47

后序遍历迭代版本

手撸字典树用js和go

动态规划经典 322

二维动态规划经典 1143

矩阵类型 bfs 1091

解题小技巧

刷题整体的思路可以查看

https://programmercarl.com/

大小写切换

可以不用知道字母 c 的大小写的情况,做大小写切换。

char c = '字母'
c ^= (1 << 5)

最大公约数

使用辗转相除法

定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。最大公约数(Greatest Common Divisor)缩写为GCD。

gcd(a,b) = gcd(b,a mod b)

const gcd = (a, b) => {
    if (b === 0) return a;
    return gcd(b, a % b);
};

另:最小公倍数 = 两数乘积 / 最大公约数乘积

滑动窗口的模板

function findSubArray(nums) {
    const n = nums.length;
    let left = 0, right = 0; //[left, right],闭区间
    let sums = 0; //用于统计 子数组/子区间 是否有效,根据题目可能会改成求和/计数
    let res = 0; // 保存最大的满足题目要求的 子数组/子串 长度
    while (right < n) {
        // 当右边的指针没有搜索到 数组/字符串 的结尾
        sums += nums[right]; // 增加当前右边指针的数字/字符的求和/计数
        while (不符合条件) { //区间[left, right]不符合题意
            // 此时需要一直移动左指针,直至找到一个符合题意的区间
            sums -= nums[left]; // 移动左指针前需要从counter中减少left位置字符的求和/计数
            left += 1; // 真正的移动左指针,注意不能跟上面一行代码写反
        }// 到 while 结束时,我们找到了一个符合题意要求的 子数组/子串
        res = max(res, right - left + 1); // 需要更新结果
        right += 1; // 移动右指针,去探索新的区间
    }
    return res;
}

回溯的模板

void backtracking(参数) {
    if (终止条件) {
        存放结果;
        return;
    }

    for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
        处理节点;
        backtracking(路径,选择列表); // 递归
        回溯,撤销处理结果
    }
}

最小堆实现

众所周知,js没有自带的小根堆实现,所以需要自己写一个,这里贴一个抄的,自己写还不行。

class MinHeap {
    constructor(data = []) {
        this.data = data;
        this.comparator = (a, b) => a - b;
        this.heapify();
    }
    // 建堆
    heapify() {
        if (this.size() < 2) return;
        // 将每个元素插入,往上冒到合适位置
        for (let i = 1; i < this.size(); i++) {
            this.bubbleUp(i);
        }
    }
    // 获得堆顶元素
    peek() {
        if (this.size() === 0) return null;
        return this.data[0];
    }
    // 往小顶堆中插入元素
    offer(value) {
        this.data.push(value);
        // 在最后的位置插入且向上冒泡
        this.bubbleUp(this.size() - 1);
    }
    // 移除顶堆元素
    poll() {
        if (this.size() === 0) {
            return null;
        }
        const result = this.data[0];
        const last = this.data.pop();
        if (this.size() !== 0) {
            // 最末尾元素放到堆顶
            this.data[0] = last;
            // 向下调整直至放到合适位置
            this.bubbleDown(0);
        }
        return result;
    }

    bubbleUp(index) {
        while (index > 0) {
            // 获得父节点索引
            const parentIndex = (index - 1) >> 1;
            // 如果要调整的节点比父节点的值还要小,就需要一直往上冒
            if (this.comparator(this.data[index], this.data[parentIndex]) < 0) {
                // 交换位置往上冒
                this.swap(index, parentIndex);
                index = parentIndex;
            } else {
                break;
            }
        }
    }

    bubbleDown(index) {
        const lastIndex = this.size() - 1;
        while (true) {
            // 获得要调整的节点的左子节点和右子节点的索引
            const leftIndex = index * 2 + 1;
            const rightIndex = index * 2 + 2;
            let findIndex = index;
            // 如果左/右子节点的值小于当前要调整的节点的值
            if (leftIndex <= lastIndex && this.comparator(this.data[leftIndex], this.data[findIndex]) < 0) {
                findIndex = leftIndex;
            }
            if (rightIndex <= lastIndex && this.comparator(this.data[rightIndex], this.data[findIndex]) < 0) {
                findIndex = rightIndex;
            }
            // 则要交换
            if (index !== findIndex) {
                this.swap(index, findIndex);
                index = findIndex;
            } else {
                break;
            }
        }
    }
    // 交换元素
    swap(index1, index2) {
        [this.data[index1], this.data[index2]] = [this.data[index2], this.data[index1]];
    }
    // 获得堆大小
    size() {
        return this.data.length;
    }
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇