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
🧭目录导航
- Binary Search Algorithm(二分搜索算法)
- Two Points (双指针)
- Binary Tree(二叉树)
- Recursion(递归)
- Greedy Algorithm(贪心算法)
- String (字符串)
- Linked List(链表)
- Stack(栈)
- Heap(堆)
- Dynamic Programming(动态规划)
- Array(数组)
- 历届周赛
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 (双指针)
Binary Tree(二叉树)
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% |