这是我的 Leetcode 算法题解代码仓。一边练习一边学习,刷题同时记录笔记。使用 JS 语言。
有两种视图:
如果对代码仓有任何问题,欢迎联系我:)
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 1 | two-sum | 1. 两数之和 | main.js | README.md | 对撞指针/查找表 | easy |
| 3 | longest-substring-without-repeating-characters | 3. 无重复字符的最长子串 | main.js | README.md | 双指针维护滑动窗口 | medium |
| 11 | container-with-most-water | 11. 盛最多水的容器 | main.js | README.md | 双指针 | medium |
| 15 | 3sum | 15. 三数之和 | main.js | README.md | map 映射 | medium |
| 16 | 3sum-closest | 16. 最接近的三数之和 | main.js | README.md | 排序+双指针 | medium |
| 18 | 4sum | 18.四数之和 | main.js | README.md | 排序+双指针 | medium |
| 19 | remove-nth-node-from-end-of-list | 19. 删除链表的倒数第 N 个结点 | main.js | README.md | 链表 | medium |
| 20 | valid-parentheses | 20. 有效的括号 | main.js | README.md | 栈 | easy |
| 23 | merge-k-sorted-lists | 23. 合并 K 个升序链表 | hard | |||
| 24 | swap-nodes-in-pairs | 24. 两两交换链表中的节点 | main.js | README.md | 链表 | medium |
| 26 | remove-duplicates-from-sorted-array | 26. 删除有序数组中的重复项 | main.js | README.md | 双指针 | easy |
| 27 | remove-element | 27.移除元素 | main1.js | README.md | 双指针 | easy |
| 43 | multiply-strings | 43. 字符串相乘 | ||||
| 49 | group-anagrams | 49. 字母异位词分组 | main.js | README.md | 排序+双指针 | medium |
| 70 | climbing-stairs | 70. 爬楼梯 | main.js | README.md | 动态规划 | easy |
| 75 | sort-colors | 75. 颜色分类 | main1.js | README.md | 计数排序/三路快排 partition | medium |
| 76 | minimum-window-substring | 76. 最小覆盖子串 | main.js | README.md | 双指针+map | hard |
| 80 | remove-duplicates-from-sorted-array-ii | 80. 删除有序数组中的重复项 II | main.js | README.md | 双指针 | medium |
| 88 | merge-sorted-array | 88. 合并两个有序数组 | main.js | README.md | 双指针 | easy |
| 92 | reverse-linked-list-ii | 92. 反转链表 II | main.js | README.md | 链表 | medium |
| 94 | binary-tree-inorder-traversal | 94. 二叉树的中序遍历 | main.ts | README.md | 二叉树 | easy |
| 98 | validate-binary-search-tree | 98. 验证二叉搜索树 | main.js | README.md | 递归判断 | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 102 | binary-tree-level-order-traversal | 102. 二叉树的层序遍历 | main.js | README.md | BFS | medium |
| 125 | valid-palindrome | 125. 验证回文串 | main.js | README.md | 对撞指针 | easy |
| 144 | binary-tree-preorder-traversal | 144. 二叉树的前序遍历 | main.js | README.md | 迭代 | medium |
| 167 | two-sum-ii-input-array-is-sorted | 167. 两数之和 II - 输入有序数组 | main.js | README.md | 二分搜索/对撞指针 | easy |
| 198 | house-robber | 198. 打家劫舍 | main.js | README.md | 动态规划 | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 202 | two-sum | 202. 快乐数 | main1.js | README.md | 哈希表 | easy |
| 203 | remove-linked-list-elements | 203. 移除链表元素 | main.js | README.md | 链表 | easy |
| 205 | isomorphic-strings | 205. 同构字符串 | main.js | README.md | map 映射 | easy |
| 206 | reverse-linked-list | 206. 反转链表 | main.js | README.md | 链表 | easy |
| 209 | minimum-size-subarray-sum | 209.长度最小的子数组 | main.js | README.md | 滑动窗口 | medium |
| 215 | kth-largest-element-in-an-array | 215. 数组中的第 K 个最大元素 | main.js | RAEDME.md | 暴力解/堆/快速选择 | medium |
| 219 | contains-duplicate-ii | 219. 存在重复元素 II | main.js | README.md | set | easy |
| 220 | contains-duplicate-iii | 220. 存在重复元素 III | main.java | README.md | 滑动窗口+treeset | medium |
| 235 | lowest-common-ancestor-of-a-binary-search-tree | 235. 二叉搜索树的最近公共祖先 | main.js | README.md | 递归 | easy |
| 242 | valid-anagram | 242. 有效的字母异位词 | main.js | README.md | 线性比较/哈希 | easy |
| 257 | binary-tree-paths | 257. 二叉树的所有路径 | main.js | README.md | 递归 | easy |
| 283 | move-zeroes | 283.移动零 | main1.js | README.md | 数组 | easy |
| 290 | word-pattern | 290. 单词规律 | main.js | README.md | map 映射 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 |
|---|---|---|---|---|---|
| 344 | reverse-string | 344. 反转字符串 | main.js | README.md | 对撞指针 |
| 345 | reverse-vowels-of-a-string | 345. 反转字符串中的元音字母 | main.js | README.md | 对撞指针 |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 415 | add-strings | 415. 字符串相加 | main.js | README.md | 模拟竖式加法 | easy |
| 417 | pacific-atlantic-water-flow | 417. 太平洋大西洋水流问题 | main.js | README.md | DFS | medium |
| 438 | find-all-anagrams-in-a-string | 438. 找到字符串中所有字母异位词 | main.js | README.md | 滑动窗口 | medium |
| 447 | number-of-boomerangs | 447. 回旋镖的数量 | main.js | README.md | map | medium |
| 451 | sort-characters-by-frequency | 451.根据字符出现频率排序 | main.js | README.md | map | medium |
| 454 | 4sum-ii | 454. 四数相加 II | main.js | README.md | 查找表 map | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 504 | base-7 | 504. 七进制数 | main.ts | README.md | 栈 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 622 | design-circular-queue | 622. 设计循环队列 | main.ts | README.md | 循环队列 | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 933 | number-of-recent-calls | 933. 最近的请求次数 | mains.js | README.md | 队列模拟 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 3461 | check-if-digits-are-equal-in-string-after-operations-i | 3461. 判断操作后字符串中的数字是否相等 I | mains.ts | README.md | 压缩模拟 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 1 | two-sum | 1. 两数之和 | main.js | README.md | 对撞指针/查找表 | easy |
| 125 | valid-palindrome | 125. 验证回文串 | main.js | README.md | 对撞指针 | easy |
| 167 | two-sum-ii-input-array-is-sorted | 167. 两数之和 II - 输入有序数组 | main.js | README.md | 二分搜索/对撞指针 | easy |
| 344 | reverse-string | 344. 反转字符串 | main.js | README.md | 对撞指针 | |
| 345 | reverse-vowels-of-a-string | 345. 反转字符串中的元音字母 | main.js | README.md | 对撞指针 |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 1 | two-sum | 1. 两数之和 | main.js | README.md | 对撞指针/查找表 | easy |
| 454 | 4sum-ii | 454. 四数相加 II | main.js | README.md | 查找表 map | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 3 | longest-substring-without-repeating-characters | 3. 无重复字符的最长子串 | main.js | README.md | 双指针维护滑动窗口 | medium |
| 11 | container-with-most-water | 11. 盛最多水的容器 | main.js | README.md | 双指针 | medium |
| 16 | 3sum-closest | 16. 最接近的三数之和 | main.js | README.md | 排序+双指针 | medium |
| 18 | 4sum | 18.四数之和 | main.js | README.md | 排序+双指针 | medium |
| 26 | remove-duplicates-from-sorted-array | 26. 删除有序数组中的重复项 | main.js | README.md | 双指针 | easy |
| 27 | remove-element | 27.移除元素 | main1.js | README.md | 双指针 | easy |
| 49 | group-anagrams | 49. 字母异位词分组 | main.js | README.md | 排序+双指针 | medium |
| 76 | minimum-window-substring | 76. 最小覆盖子串 | main.js | README.md | 双指针+map | hard |
| 80 | remove-duplicates-from-sorted-array-ii | 80. 删除有序数组中的重复项 II | main.js | README.md | 双指针 | medium |
| 88 | merge-sorted-array | 88. 合并两个有序数组 | main.js | README.md | 双指针 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 3 | longest-substring-without-repeating-characters | 3. 无重复字符的最长子串 | main.js | README.md | 双指针维护滑动窗口 | medium |
| 209 | minimum-size-subarray-sum | 209.长度最小的子数组 | main.js | README.md | 滑动窗口 | medium |
| 220 | contains-duplicate-iii | 220. 存在重复元素 III | main.java | README.md | 滑动窗口+treeset | medium |
| 438 | find-all-anagrams-in-a-string | 438. 找到字符串中所有字母异位词 | main.js | README.md | 滑动窗口 | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 15 | 3sum | 15. 三数之和 | main.js | README.md | map 映射 | medium |
| 76 | minimum-window-substring | 76. 最小覆盖子串 | main.js | README.md | 双指针+map | hard |
| 205 | isomorphic-strings | 205. 同构字符串 | main.js | README.md | map 映射 | easy |
| 290 | word-pattern | 290. 单词规律 | main.js | README.md | map 映射 | easy |
| 447 | number-of-boomerangs | 447. 回旋镖的数量 | main.js | README.md | map | medium |
| 451 | sort-characters-by-frequency | 451.根据字符出现频率排序 | main.js | README.md | map | medium |
| 454 | 4sum-ii | 454. 四数相加 II | main.js | README.md | 查找表 map | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 16 | 3sum-closest | 16. 最接近的三数之和 | main.js | README.md | 排序+双指针 | medium |
| 18 | 4sum | 18.四数之和 | main.js | README.md | 排序+双指针 | medium |
| 49 | group-anagrams | 49. 字母异位词分组 | main.js | README.md | 排序+双指针 | medium |
| 75 | sort-colors | 75. 颜色分类 | main1.js | README.md | 计数排序/三路快排 partition | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 19 | remove-nth-node-from-end-of-list | 19. 删除链表的倒数第 N 个结点 | main.js | README.md | 链表 | medium |
| 24 | swap-nodes-in-pairs | 24. 两两交换链表中的节点 | main.js | README.md | 链表 | medium |
| 92 | reverse-linked-list-ii | 92. 反转链表 II | main.js | README.md | 链表 | medium |
| 203 | remove-linked-list-elements | 203. 移除链表元素 | main.js | README.md | 链表 | easy |
| 206 | reverse-linked-list | 206. 反转链表 | main.js | README.md | 链表 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 20 | valid-parentheses | 20. 有效的括号 | main.js | README.md | 栈 | easy |
| 504 | base-7 | 504. 七进制数 | main.ts | README.md | 栈 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 94 | binary-tree-inorder-traversal | 94. 二叉树的中序遍历 | main.ts | README.md | 二叉树 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 70 | climbing-stairs | 70. 爬楼梯 | main.js | README.md | 动态规划 | easy |
| 198 | house-robber | 198. 打家劫舍 | main.js | README.md | 动态规划 | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 75 | sort-colors | 75. 颜色分类 | main1.js | README.md | 计数排序/三路快排 partition | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 98 | validate-binary-search-tree | 98. 验证二叉搜索树 | main.js | README.md | 递归判断 | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 102 | binary-tree-level-order-traversal | 102. 二叉树的层序遍历 | main.js | README.md | BFS | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 144 | binary-tree-preorder-traversal | 144. 二叉树的前序遍历 | main.js | README.md | 迭代 | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 167 | two-sum-ii-input-array-is-sorted | 167. 两数之和 II - 输入有序数组 | main.js | README.md | 二分搜索/对撞指针 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 202 | two-sum | 202. 快乐数 | main1.js | README.md | 哈希表 | easy |
| 242 | valid-anagram | 242. 有效的字母异位词 | main.js | README.md | 线性比较/哈希 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 215 | kth-largest-element-in-an-array | 215. 数组中的第 K 个最大元素 | main.js | RAEDME.md | 暴力解/堆/快速选择 | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 215 | kth-largest-element-in-an-array | 215. 数组中的第 K 个最大元素 | main.js | RAEDME.md | 暴力解/堆/快速选择 | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 219 | contains-duplicate-ii | 219. 存在重复元素 II | main.js | README.md | set | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 220 | contains-duplicate-iii | 220. 存在重复元素 III | main.java | README.md | 滑动窗口+treeset | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 235 | lowest-common-ancestor-of-a-binary-search-tree | 235. 二叉搜索树的最近公共祖先 | main.js | README.md | 递归 | easy |
| 257 | binary-tree-paths | 257. 二叉树的所有路径 | main.js | README.md | 递归 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 242 | valid-anagram | 242. 有效的字母异位词 | main.js | README.md | 线性比较/哈希 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 283 | move-zeroes | 283.移动零 | main1.js | README.md | 数组 | easy |
| 3461 | check-if-digits-are-equal-in-string-after-operations-i | 3461. 判断操作后字符串中的数字是否相等 I | mains.ts | README.md | 压缩模拟 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 415 | add-strings | 415. 字符串相加 | main.js | README.md | 模拟竖式加法 | easy |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 417 | pacific-atlantic-water-flow | 417. 太平洋大西洋水流问题 | main.js | README.md | DFS | medium |
| ID | Problem | 中文地址 | JS | 解题笔记 | 核心思想 | 难度 |
|---|---|---|---|---|---|---|
| 622 | design-circular-queue | 622. 设计循环队列 | main.ts | README.md | 循环队列 | medium |
| 933 | number-of-recent-calls | 933. 最近的请求次数 | mains.js | README.md | 队列模拟 | easy |