Solving LeetCode problems using JavaScript。
题目涵盖了 LeetCode、「程序员的面试金典」(Cracking the Coding Interview)[第六版] 以及「剑指 offer」。
src 文件夹下按照题目分类存放解题文件,每道题对应一个文件。 文件的命名按照 [题号]-[题目的英文名].js 格式,英文单词用 - 连接。
test 目录下存放按照题目分类存解题测试文件,每道题对应一个测试文件 文件的命名按照 [题号]-[题目的英文名].test.js 格式,英文单词用 - 连接。
doc 目录下主要存放解题笔记以及优秀的题解总结。
- doc/solutions 目录下存放按照题目分类的解题笔记文件,每道题对应一个笔记文件
- 文件的命名按照 [题号]-[题目的英文名].md 格式,英文单词用 - 连接。
npm test test/**/*.js
npm test test/path/to/file.js
npm test -- --grep test-regex-string
对于每道题目都需要创建三个文件:源文件,测试文件,笔记文件,可以借助于自定义的 add
命令快速创建。
首先运行如下命令,将当前项目 bin 目录下的命令关联到本地 node_modules 下面
npm link
# -f filename (required) -c category (required) -t chineseDesc (optional)
add -f numberOfProblem-name-of-leetcode-problem -c categoryName -t chineseDescription
# 例如(提供中文题目名称)- 供题解 Markdown 文件使用
add -f 102-binary-tree-level-order-traversal -c binary-tree -t 二叉树的层次遍历
# 不提供中文题目名称
add -f 102-binary-tree-level-order-traversal -c binary-tree
npm unlink
移除之后,可以通过运行如下命令,跟运行步骤2中的 add
命令等价。
node bin/add.js -f numberOfProblem-name-of-leetcode-problem -c categoryName -t chineseDesc
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
1 | 两数之和 | 简单 | 题解 | |
11 | 盛水最多的容器 | 中等 | 题解 | |
15 | 三数之和 | 中等 | 题解 | |
26 | 删除排序数组中的重复项 | 简单 | 题解 | |
27 | 移除元素 | 简单 | 题解 | |
66 | 加一 | 简单 | 题解 | |
70 | 爬楼梯 | 简单 | 题解 | |
80 | 删除排序数组中的重复项 II | 中等 | 题解 | |
88 | 合并两个有序数组 | 简单 | 题解 | |
189 | 旋转数组 | 简单 | 题解 | |
283 | 移动零 | 简单 | 题解 | |
724 | 寻找数组的中心索引 | 简单 | 题解 | |
747 | 至少是其他数字两倍的最大数 | 简单 | 题解 | |
999 | 车的可用捕获量 | 简单 | 题解 | 使用方向向量简化移动 |
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
146 | LRU缓存机制 | 中等 | 题解 | |
876 | 链表的中间结点 | 简单 | 题解 | 1. 一次遍历;2. 使用快慢指针遍历 |
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
20 | 有效的括号 | 简单 | 题解 | |
155 | 最小栈 | 简单 | 题解 | |
1111 | 有效括号的嵌套深度 | 中等 | 题解 | 使用栈判断最大深度;奇偶性判断 |
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
820 | 单词的压缩编码 | 中等 | 题解 | (1)字典树(Trie)后缀树 + 排序(2)Set 去重 |
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
32 | 最长有效括号 | 困难 | 题解 |
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
题号 | 题目链接 | 难度 | 题解链接 | 刷题思路 |
---|---|---|---|---|
892 | 三维形体的表面积 | 简单 | 题解 | 画图找规律 |
914 | 卡牌分组 | 简单 | 题解 | 哈希表分组,辗转相除求最大公约数 |
题号 | 题目链接 | 难度 | 题解链接 | 分类 | 刷题思路 |
---|---|---|---|---|---|
题号 | 题目链接 | 难度 | 题解链接 | 分类 | 刷题思路 |
---|---|---|---|---|---|
10.01 | 合并排序的数组 | 简单 | 题解 | 数组、双指针 | |
17.16 | 按摩师 | 简单 | 题解 | 动态规划 | 类似于 198. 打家劫舍 问题 |