LeetCode
LeetCode copied to clipboard
JavaScript AC solutions to problems on LeetCode
LeetCode
用 JavaScript 刷 LeetCode 不丢人 😂
本开源项目的目的:
- 帮助前端同学培养算法和数据结构的兴趣,喜欢上这种刷题的学习模式;
- 提供大部分题目的解题思路;
对于刚开始接触 LeetCode 的同学,我建议:
- 一刷:按照算法或者数据结构的分类,从 Easy 到 Medium 刷一遍,这样可以帮助你理解每一种算法和数据结构的实现以及常用技巧。
- 二刷:可以尝试思考每一道题目是否可以用其它算法解决以及它们之间的优劣。
Hard 类型的题目相对难度比较大,一开始接触这类题目可能会把你心态刷炸,所以等基本功稳健之后,再选择通过这类题目来进阶提升。
📚文章汇总
专题总结
- 前端工程师的 LeetCode 之旅 -- 二分搜索算法 Easy 篇
- 前端工程师的 LeetCode 之旅 -- 二分搜索算法 Medium 篇(上)
- 前端工程师的 LeetCode 之旅 -- 二分搜索算法 Medium 篇(下)
- 前端工程师的 LeetCode 之旅 -- 双指针技巧 Easy 篇
- 前端工程师的 LeetCode 之旅 -- 双指针技巧 Medium 篇(滑动窗口算法)
- 前端工程师的 LeetCode 之旅 -- 双指针技巧 Medium 篇(K-Sum)
- 前端工程师的 LeetCode 之旅 -- KMP 字符串匹配算法
- 前端工程师的 LeetCode 之旅 -- 二叉树 Easy 篇
- 前端工程师的 LeetCode 之旅 -- 二叉树 Medium 篇(DFS 和 BFS)
- 前端工程师的 LeetCode 之旅 -- 二叉树 Medium 篇(根据遍历序列构造二叉树)
- 前端工程师的 LeetCode 之旅 -- 链表 Easy 篇
竞赛总结
- 前端工程师的 LeetCode 之旅 - 夜喵专场(20)
- 前端工程师的 LeetCode 之旅 - 周赛 173
- 前端工程师的 LeetCode 之旅 - 周赛 177
- 前端工程师的 LeetCode 之旅 - 周赛 178
- 前端工程师的 LeetCode 之旅 - 夜喵专场(21)
- 前端工程师的 LeetCode 之旅 - 周赛 179
- 前端工程师的 LeetCode 之旅 - 周赛 180
- 前端工程师的 LeetCode 之旅 - 夜喵专场(22)
- 前端工程师的 LeetCode 之旅 - 周赛 181
- 前端工程师的 LeetCode 之旅 - 周赛 182
- 前端工程师的 LeetCode 之旅 - 夜喵专场(23)
- 前端工程师的 LeetCode 之旅 - 周赛 183
- 前端工程师的 LeetCode 之旅 - 周赛 184
- 前端工程师的 LeetCode 之旅 - 夜喵专场(24)
- 前端工程师的 LeetCode 之旅 - 周赛 185
- 前端工程师的 LeetCode 之旅 - 周赛 200
🧭目录导航
- Binary Search Algorithm(二分搜索算法)
- Two Points (双指针)
- Binary Tree(二叉树)
- Recursion(递归)
- Greedy Algorithm(贪心算法)
- String (字符串)
- Linked List(链表)
- Stack(栈)
- Heap(堆)
- Dynamic Programming(动态规划)
- Array(数组)
- Graph Theory(图论)
- 历届周赛
Binary Search Algorithm(二分搜索算法)
题目 | 难度 | 解法 | beats Runtime |
---|---|---|---|
852. 山脉数组的峰顶索引 | Easy | BinarySearch | 98.70% |
744. 寻找比目标字母大的最小字母 | Easy | BinarySearch | 100.00% |
367. 有效的完全平方数 | Easy | BinarySearch | 99.67% |
441. 排列硬币 | Easy | BinarySearch | 100.00% |
475. 供暖器 | Easy | BinarySearch | 100.00% |
69. x 的平方根 | Easy | BinarySearch | 96.10% |
378. 有序矩阵中第K小的元素 | Medium | BinarySearch | 97.86% |
875. 爱吃香蕉的珂珂 | Medium | BinarySearch | 91.82% |
436. 寻找右区间 | Medium | BinarySearch | 100.00% |
162. 寻找峰值 | Medium | BinarySearch | 90.60% |
658. 找到 K 个最接近的元素 | Medium | BinarySearch | 96.82% |
275. H指数 II | Medium | BinarySearch | 97.30% |
209. 长度最小的子数组 | Medium | BinarySearch SlidingWindow | 97.96% |
74. 搜索二维矩阵 | Medium | BinarySearch | 94.89% |
34. 在排序数组中查找元素的第一个和最后一个位置 | Medium | BinarySearch | 94.28% |
153. 寻找旋转排序数组中的最小值 | Medium | BinarySearch | 99.04% |
33. 搜索旋转排序数组 | Medium | BinarySearch | 98.15% |
81. 搜索旋转排序数组 II | Medium | BinarySearch | 99.72% |
287. 寻找重复数 | Medium | HashMap BinarySearch | 86.83% |
154. 寻找旋转排序数组中的最小值 II | Hard | BinarySearch | 97.87% |
Two Points (双指针)
题目 | 难度 | 解法 | beats Runtime |
---|---|---|---|
977. 有序数组的平方 | Easy | TwoPoints | 99.39% |
344. 反转字符串 | Easy | TwoPoints | 98.36% |
349. 两个数组的交集 | Easy | HashMap | 99.34% |
283. 移动零 | Easy | TwoPoints | 92.57% |
27. 移除元素 | Easy | TwoPoints | 97.20% |
167. 两数之和 II - 输入有序数组 | Easy | TwoPoints | 91.86% |
345. 反转字符串中的元音字母 | Easy | TwoPoints | 95.53% |
844. 比较含退格的字符串 | Easy | TwoPoints Stack | 94.66% |
26. 删除排序数组中的重复项 | Easy | TwoPoints | 96.77% |
88. 合并两个有序数组 | Easy | TwoPoints | 95.92% |
350. 两个数组的交集 II | Easy | HashMap | 97.54% |
925. 长按键入 | Easy | TwoPoints | 100.00% |
141. 环形链表 | Easy | TwoPoints | 97.17% |
125. 验证回文串 | Easy | TwoPoints | 96.73% |
28. 实现strStr() | Easy | KMP | 95.96% |
234. 回文链表 | Easy | TwoPoints | 96.51% |
532. 数组中的K-diff数对 | Easy | HashMap | 99.12% |
763. 划分字母区间 | Medium | HashMap+TwoPoints+Greedy | 96.67% |
986. 区间列表的交集 | Medium | SlidingWindow | 96.43% |
11. 盛最多水的容器 | Medium | TwoPoints | 99.27% |
75. 颜色分类 | Medium | TwoPoints | 97.04% |
80. 删除排序数组中的重复项 II | Medium | TwoPoints | 99.54% |
524. 通过删除字母匹配到字典里最长单词 | Medium | TwoPoints | 93.75% |
1004. 最大连续1的个数 III | Medium | TwoPoints | 95.83% |
16. 最接近的三数之和 | Medium | TwoPoints | 97.27% |
142. 环形链表 II | Medium | TwoPoints | 94.77% |
15. 三数之和 | Medium | TwoPoints | 95.96% |
923. 三数之和的多种可能 | Medium | TwoPoints HashTable+Combination | 96.30% |
18. 四数之和 | Medium | TwoPoints | 99.36% |
845. 数组中的最长山脉 | Medium | SlidingWindow | 100.00% |
930. 和相同的二元子数组 | Medium | PrefixSum | 100.00% |
713. 乘积小于K的子数组 | Medium | SlidingWindow | 100.00% |
3. 无重复字符的最长子串 | Medium | SlidingWindow+HashTable | 97.26% |
904. 水果成篮 | Medium | SlidingWindow+HashTable | 88.24% |
567. 字符串的排列 | Medium | SlidingWindow+HashTable | 87.75% |
881. 救生艇 | Medium | TwoPoints | 85.00% |
Binary Tree(二叉树)
题目 | 难度 | 解法 | beats Runtime |
---|---|---|---|
938. 二叉搜索树的范围和 | Easy | Recursion+BST | 96.57% |
617. 合并二叉树 | Easy | Recursion | 97.63% |
226. 翻转二叉树 | Easy | Recursion | 98.02% |
104. 二叉树的最大深度 | Easy | Recursion | 90.87% |
700. 二叉搜索树中的搜索 | Easy | Recursion+BST | 90.57% |
965. 单值二叉树 | Easy | Queue Recursion | 94.69% |
669. 修剪二叉搜索树 | Easy | Recursion | 98.25% |
107. 二叉树的层次遍历 II | Easy | Queue+Stack Recursion | 98.25% |
637. 二叉树的层平均值 | Easy | Recursion | 98.61% |
235. 二叉搜索树的最近公共祖先 | Easy | Recursion+BST | 92.88% |
872. 叶子相似的树 | Easy | Recursion | 91.80% |
257. 二叉树的所有路径 | Easy | Recursion | 98.09% |
897. 递增顺序查找树 | Easy | Recursion | 94.34% |
538. 把二叉搜索树转换为累加树 | Easy | Recursion+BST | 84.93% |
530. 二叉搜索树的最小绝对差 | Easy | Recursion+BST | 85.71% |
783. 二叉搜索树结点最小距离 | Easy | Recursion+BST | 80.22% |
100. 相同的树 | Easy | Recursion | 75.53% |
653. 两数之和 IV - 输入 BST | Easy | Recursion+BST+HashTable | 100.00% |
437. 路径总和 III | Easy | Recursion | 74.51% |
606. 根据二叉树创建字符串 | Easy | Recursion | 74.47% |
404. 左叶子之和 | Easy | Recursion | 90.00% |
110. 平衡二叉树 | Easy | Recursion | 95.09% |
563. 二叉树的坡度 | Easy | Recursion | 73.33% |
993. 二叉树的堂兄弟节点 | Easy | Recursion | 87.88% |
101. 对称二叉树 | Easy | Recursion | 92.13% |
112. 路径总和 | Easy | Recursion | 84.76% |
671. 二叉树中第二小的节点 | Easy | Recursion | 95.16% |
543. 二叉树的直径 | Easy | Recursion | 93.98% |
501. 二叉搜索树中的众数 | Easy | Recursion+HashTable | 86.79% |
572. 另一个树的子树 | Easy | Recursion | 100.00% |
111. 二叉树的最小深度 | Easy | Recursion | 96.55% |
1022. 从根到叶的二进制数之和 | Easy | Recursion | 94.55% |
687. 最长同值路径 | Easy | Recursion | 85.25% |
144. 二叉树的前序遍历 | Medium | Recursion | 68.00% |
102. 二叉树的层次遍历 | Medium | Queue+BFS Recursion+DFS | 67.65% |
94. 二叉树的中序遍历 | Medium | Recursion+DFS | 64.76% |
987. 二叉树的垂序遍历 | Medium | Recursion+HashTable | 100.00% |
1008. 先序遍历构造二叉树 | Medium | Recursion | 90.91% |
105. 从前序与中序遍历序列构造二叉树 | Medium | Recursion | 58.31% |
106. 从中序与后序遍历序列构造二叉树 | Medium | Recursion | 94.87% |
889. 根据前序和后序遍历构造二叉树 | Medium | Recursion | 89.29% |
654. 最大二叉树 | Medium | Recursion | 85.71% |
894. 所有可能的满二叉树 | Medium | HashTable+Recursion | 100.00% |
814. 二叉树剪枝 | Medium | Recursion | 89.66% |
450. 删除二叉搜索树中的节点 | Medium | Recursion | 100.00% |
513. 找树左下角的值 | Medium | Recursion | 100.00% |
701. 二叉搜索树中的插入操作 | Medium | Recursion | 66.67% |
230. 二叉搜索树中第K小的元素 | Medium | Recursion | 90.91% |
96. 不同的二叉搜索树 | Medium | Recursion | 96.00% |
1104. 二叉树寻路 | Medium | Iteration | 50.00% |
1123. 最深叶节点的最近公共祖先 | Medium | DFS | 90.48% |
998. 最大二叉树 II | Medium | Recursion | 92.31% |
1026. 节点与其祖先之间的最大差值 | Medium | Recursion | 83.33% |
116. 填充每个节点的下一个右侧节点指针 | Medium | Recursion | 98.95% |
117. 填充每个节点的下一个右侧节点指针 II | Medium | Recursion | 88.00% |
988. 从叶结点开始的最小字符串 | Medium | Recursion | 100.00% |
1145. 二叉树着色游戏 | Medium | Recursion 题解 | 97.14% |
145. 二叉树的后序遍历 | Hard | Recursion+DFS Stack+DFS | 84.00% |
Recursion(递归)
题目 | 难度 | 解法 | beats Runtime |
---|---|---|---|
779. 第K个语法符号 | Medium | Recursion | 64.15% |
794. 有效的井字游戏 | Medium | ----- | 83.33% |
Greedy Algorithm(贪心算法)
题目 | 难度 | 解法 | beats Runtime |
---|---|---|---|
944. 删列造序 | Easy | HashTable Greedy | 98.46% |
String (字符串)
题目 | 难度 | 代码 | beats Runtime |
---|---|---|---|
709. 转换成小写字母 | Easy | String | 95.27% |
771. 宝石与石头 | Easy | HashMap | 96.19% |
1108. IP 地址无效化 | Easy | HashMap | 81.93% |
392. Is Subsequence | Medium | String | 96.43% |
539. 最小时间差 | Medium | Sort+Skill | 94.59% |
Linked List(链表)
题目 | 难度 | 代码 | beats Runtime |
---|---|---|---|
237. 删除链表中的节点 | Easy | -- | 91.84% |
206. 反转链表 | Easy | iteration | 96.28% |
234. 回文链表 | Easy | TwoPoints+Reverse | 98.98% |
876. 链表的中间结点 | Easy | TwoPoints | 92.99% |
1290. 二进制链表转整数 | Easy | Iteration | 99.31% |
141. 环形链表 | Easy | TowPoints | 96.93% |
83. 删除排序链表中的重复元素 | Easy | Ieration | 61.04% |
147. 对链表进行插入排序 | Medium | sort | 75.68% |
328. 奇偶链表 | Medium | TwoPoints | 75.16% |
817. 链表组件 | Medium | Linked-LIst | 79.31% |
86. 分隔链表 | Medium | Linked-LIst | 85.16% |
143. 重排链表 | Medium | TwoPoints+Merge+Reverse | 97.62% |
445. 两数相加 II | Medium | TwoPoints+Reverse | 66.67% |
725. 分隔链表 | Medium | TwoPoints+Reverse | 98.18% |
1019. 链表中的下一个更大节点 | Medium | -- | 96.15% |
92. 反转链表 II | Medium | -- | 72.54% |
82. 删除排序链表中的重复元素 II | Medium | Iteration | 71.94% |
1171. 从链表中删去总和值为零的连续节点 | Medium | HashMap | 69.44% |
19. 删除链表的倒数第N个节点 | Medium | TwoPoints | 98.71% |
61. 旋转链表 | Medium | Iteration | 95.08% |
Stack(栈)
题目 | 难度 | 代码 | beats Runtime |
---|---|---|---|
496. 下一个更大元素 I | Easy | Stack+HashMap | 95.47% |
1021. 删除最外层的括号 | Easy | Iteration | 97.18% |
682. 棒球比赛 | Easy | Stack | 94.84% |
1047. 删除字符串中的所有相邻重复项 | Easy | Stack | 73.21% |
844. 比较含退格的字符串 | Easy | Stack | 92.83% |
20. 有效的括号 | Easy | Stack | 99.24% |
739. 每日温度 | Medium | Stack | 100.00% |
Heap(堆)
题目 | 难度 | 代码 | beats Runtime |
---|---|---|---|
40. 最小的k个数 | Easy | Divide-and-Conquer+sort | 100.00% |
703. 数据流中的第K大元素 | Easy | Heap | 69.53% |
1046. 最后一块石头的重量 | Easy | Sort | 98.88% |
451. 根据字符出现频率排序 | Medium | HashTable+Sort | 85.55% |
215. 数组中的第K个最大元素 | Medium | Sort | 61.86% |
347. 前 K 个高频元素 | Medium | Sort | 93.75% |
692. 前K个高频单词 | Medium | HashMap+Sort | 97.98% |
973. 最接近原点的 K 个点 | Medium | Divide-and-Conquer | 100.00% |
1714.最小K个数 | Medium | Divide-and-Conquer+sort | 100.00% |
Dynamic Programming(动态规划)
题目 | 难度 | 代码 | beats Runtime |
---|---|---|---|
263. 丑数 | Easy | Math | 94.92% |
49. 丑数 | Medium | DP | 100.00% |
264. 丑数 II | Medium | DP | 94.37% |
1201. 丑数 III | Medium | Binary-Search | 94.12% |
313. 超级丑数 | Medium | DP | 94.00% |
1709. 第 k 个数 | Medium | DP | 100.00% |
Array(数组)
Graph Theory(图论)
题目 | 难度 | 代码 | 时间复杂度 | 分析 |
---|---|---|---|---|
207. 课程表 | Medium | TopologicalSorting | O(n+m) | -- |
210. 课程表 II | Medium | TopologicalSorting | O(n+m) | -- |
周赛打卡
题目 | 难度 | 代码 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
173 -- 1332. 删除回文子序列 | Easy | TwoPoints | 84.21% | -- |
173 -- 1333. 餐厅过滤器 | Medium | Sort | 90.91% | -- |
173 -- 1334. 阈值距离内邻居最少的城市 | Medium | Floyd-Warshall | 60.67% | -- |
173 -- 1335. 工作计划的最低难度 | Hard | DP | 80.00% | -- |
174 -- 1337. 方阵中战斗力最弱的 K 行 | Easy | Sort | 93.75% | -- |
174 -- 1338. 数组大小减半 | Medium | HashTable | 92.68% | -- |
174 -- 1339. 分裂二叉树的最大乘积 | Medium | Tree | 57.14% | -- |
174 -- 1340. 跳跃游戏 V | Hard | Recursion | 93.33% | -- |
177 -- 5169. 日期之间隔几天 | Easy | -- | 100.00% | -- |
177 -- 5170. 验证二叉树 | Medium | Tree | 100.00% | -- |
177 -- 5171. 最接近的因数 | Medium | Math | 100.00% | -- |
177 -- 5172. 形成三的最大倍数 | Hard | Math | 100.00% | -- |
178 -- 5344. 有多少小于当前数字的数字 | Easy | -- | 100.00% | -- |
178 -- 5345. 通过投票对团队排名 | Medium | Sort | 100.00% | -- |
178 -- 5346. 二叉树中的列表 | Medium | Tree+Recursion | 100.00% | -- |
178 -- 1368. 使网格图至少有一条有效路径的最小代价 | Hard | BFS | 82.35% | -- |
179 -- 1374. 生成每种字符都是奇数个的字符串 | Easy | -- | 100% | -- |
179 -- 1375. 灯泡开关 III | Medium | Math | 100% | -- |
179 -- 1376. 通知所有员工所需的时间 | Medium | DFS | 71.62% | -- |
179 -- 1377. T 秒后青蛙的位置 | Hard | DFS | 87.88% | -- |
180 -- 5356. 矩阵中的幸运数 | Easy | -- | 100.00% | -- |
180 -- 5357. 设计一个支持增量操作的栈 | Medium | Stack | 100.00% | -- |
180 -- 5179. 将二叉搜索树变平衡 | Medium | BST | 100.00% | -- |
180 -- 5359. 最大的团队表现值 | Hard | Heap | 100.00% | -- |
181 -- 5364. 按既定顺序创建目标数组 | Easy | Array | 100.00% | -- |
181 -- 1390. 四因数 | Medium | Math | 100.00% | -- |
181 -- 1391. 检查网格中是否存在有效路径 | Medium | BFS | 100.00% | -- |
181 -- 1392. 最长快乐前缀 | Hard | KMP | 100.00% | -- |
182 -- 5368. 找出数组中的幸运数 | Easy | -- | 100.00% | -- |
182 -- 5369. 统计作战单位数 | Medium | TwoPoints | 100.00% | -- |
182 -- 5370. 设计地铁系统 | Medium | HashMap | 100.00% | -- |
182 -- 5371. 找到所有好字符串 | Hard | 数位DP+KMP | 100.00% | -- |
183 -- 非递增顺序的最小子序列 | Easy | Sort | O(nlogn) | O(n) |
183 -- 将二进制表示减到 1 的步骤数 | Medium | -- | O(n^2) | O(1) |
183 -- 最长快乐字符串 | Medium | Sort+Greedy | O(nlogn) | O(1) |
183 -- 石子游戏 III | Hard | DP | O(n) | O(n) |
184 -- 数组中的字符串匹配 | Easy | String | O(n^2) | O(n) |
184 -- 查询带键的排列 | Medium | Array | O(n^2) | O(n) |
184 -- HTML 实体解析器 | Medium | String | -- | -- |
184 -- 给 N x 3 网格图涂色的方案数 | Hard | DP | O(n) | O(1) |