Skip to content

Commit 03b3843

Browse files
author
chufan
committed
docs: 算法文档更新
1 parent 5be6c0d commit 03b3843

File tree

9 files changed

+209
-124
lines changed

9 files changed

+209
-124
lines changed

code/algorithm/interview-101/fibonacci.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ function fibonacciOne(n) {
1111
/**
1212
* 斐波那契数列,迭代
1313
* 难度:入门
14-
* @param n
1514
*/
1615
function fibonacciTwo(n) {
1716
// 数列初始化
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
class ListNode {
2+
val: number
3+
// eslint-disable-next-line no-use-before-define
4+
next: ListNode | null
5+
6+
constructor(val?: number, next?: ListNode | null) {
7+
this.val = (val === undefined ? 0 : val)
8+
this.next = (next === undefined ? null : next)
9+
}
10+
}
11+
12+
/**
13+
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
14+
*
15+
*
16+
* @param head ListNode类
17+
* @param m int整型
18+
* @param n int整型
19+
* @return ListNode类
20+
*/
21+
export function reverseBetween(head: ListNode, m: number, n: number): ListNode {
22+
let start: ListNode = head
23+
let pre: ListNode = null
24+
25+
// 找到起点
26+
while (--m > 0) {
27+
pre = start
28+
start = start.next
29+
}
30+
31+
// 找到终点
32+
let end: ListNode = head
33+
while (--n > 0) {
34+
end = end.next
35+
}
36+
37+
// 翻转中间部分
38+
let last: ListNode = end.next
39+
end.next = null
40+
while (start != null) {
41+
const next: ListNode = start.next
42+
start.next = last
43+
last = start
44+
start = next
45+
}
46+
// 将起点前的节点与终点相连
47+
if (pre == null) return end
48+
pre.next = end
49+
return head
50+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/**
2+
*
3+
* @param head ListNode类
4+
* @param k int整型
5+
* @return ListNode类
6+
*/
7+
function reverseKGroup(head, k) {
8+
// write code here
9+
}

docs/manuscripts/solo-algorithm/interview-101/链表/reverseList.png renamed to docs/manuscripts/solo-algorithm/interview-101/images/reverseList.png

File renamed without changes.

docs/manuscripts/solo-algorithm/interview-101/readme.md

Lines changed: 101 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -5,134 +5,134 @@
55

66
### 链表
77

8-
- [x] [BM1 反转链表 【简单】](链表/1.reverseList.md)
9-
- [ ] [BM2 链表内指定区间反转 【中等】](链表/1.reverseList.md)
10-
- [ ] [BM3 链表中的节点每k个一组翻转 【中等】](链表/1.reverseList.md)
11-
- [ ] [BM4 合并两个排序的链表 【简单】](链表/1.reverseList.md)
12-
- [ ] [BM5 合并k个已排序的链表 【较难】](链表/1.reverseList.md)
13-
- [ ] [BM6 判断链表中是否有环 【简单】](链表/1.reverseList.md)
14-
- [ ] [BM7 链表中环的入口结点 【中等】](链表/1.reverseList.md)
15-
- [ ] [BM8 链表中倒数最后k个结点 【简单】](链表/1.reverseList.md)
16-
- [ ] [BM9 删除链表的倒数第n个节点 【中等】](链表/1.reverseList.md)
17-
- [ ] [BM10 两个链表的第一个公共结点 【简单】](链表/1.reverseList.md)
18-
- [ ] [BM11 链表相加(二) 【中等】](链表/1.reverseList.md)
19-
- [ ] [BM12 单链表的排序 【中等】](链表/1.reverseList.md)
20-
- [ ] [BM13 判断一个链表是否为回文结构 【简单】](链表/1.reverseList.md)
21-
- [ ] [BM14 链表的奇偶重排 【中等】](链表/1.reverseList.md)
22-
- [ ] [BM15 删除有序链表中重复的元素-I 【简单】](链表/1.reverseList.md)
23-
- [ ] [BM15 删除有序链表中重复的元素-II 【中等】](链表/1.reverseList.md)
8+
- [x] [1.反转链表【简单】](链表/reverseList.md)
9+
- [ ] [2.链表内指定区间反转 【中等】](链表/reverseBetween.md)
10+
- [ ] [3.链表中的节点每k个一组翻转 【中等】](链表/reserseGroup.md)
11+
- [ ] [4.合并两个排序的链表 【简单】](链表/reverseList.md)
12+
- [ ] [5.合并k个已排序的链表 【较难】](链表/reverseList.md)
13+
- [ ] [6.判断链表中是否有环 【简单】](链表/reverseList.md)
14+
- [ ] [7.链表中环的入口结点 【中等】](链表/reverseList.md)
15+
- [ ] [8.链表中倒数最后k个结点 【简单】](链表/reverseList.md)
16+
- [ ] [9.删除链表的倒数第n个节点 【中等】](链表/reverseList.md)
17+
- [ ] [10.两个链表的第一个公共结点 【简单】](链表/reverseList.md)
18+
- [ ] [11.链表相加(二) 【中等】](链表/reverseList.md)
19+
- [ ] [12.单链表的排序 【中等】](链表/reverseList.md)
20+
- [ ] [13.判断一个链表是否为回文结构 【简单】](链表/reverseList.md)
21+
- [ ] [14.链表的奇偶重排 【中等】](链表/reverseList.md)
22+
- [ ] [15.删除有序链表中重复的元素-I 【简单】](链表/reverseList.md)
23+
- [ ] [16.删除有序链表中重复的元素-II 【中等】](链表/reverseList.md)
2424

2525
### 二分查找/排序
2626

27-
- [ ] [BM17 二分查找-I 【简单】]()
28-
- [ ] [BM18 二维数组中的查找 【中等】]()
29-
- [ ] [BM19 寻找峰值 【中等】]()
30-
- [ ] [BM20 数组中的逆序对 【中等】]()
31-
- [ ] [BM21 旋转数组的最小数字 【简单】]()
32-
- [ ] [BM22 比较版本号 【中等】]()
27+
- [ ] [17.二分查找-I 【简单】]()
28+
- [ ] [18.二维数组中的查找 【中等】]()
29+
- [ ] [19.寻找峰值 【中等】]()
30+
- [ ] [20.数组中的逆序对 【中等】]()
31+
- [ ] [21.旋转数组的最小数字 【简单】]()
32+
- [ ] [22.比较版本号 【中等】]()
3333

3434
### 二叉树
3535

36-
- [ ] [BM23 二叉树的前序遍历 【简单】]()
37-
- [ ] [BM24 二叉树的中序遍历 【中等】]()
38-
- [ ] [BM25 二叉树的后序遍历 【简单】]()
39-
- [ ] [BM26 求二叉树的层序遍历 【中等】]()
40-
- [ ] [BM27 按之字形顺序打印二叉树 【中等】]()
41-
- [ ] [BM28 二叉树的最大深度 【简单】]()
42-
- [ ] [BM29 二叉树中和为某一值的路径(一) 【简单】]()
43-
- [ ] [BM30 二叉搜索树与双向链表 【中等】]()
44-
- [ ] [BM31 对称的二叉树 【简单】]()
45-
- [ ] [BM32 合并二叉树 【简单】]()
46-
- [ ] [BM33 二叉树的镜像 【简单】]()
47-
- [ ] [BM34 判断是不是二叉搜索树 【中等】]()
48-
- [ ] [BM35 判断是不是完全二叉树 【中等】]()
49-
- [ ] [BM36 判断是不是平衡二叉树 【简单】]()
50-
- [ ] [BM37 二叉搜索树的最近公共祖先 【简单】]()
51-
- [ ] [BM38 在二叉树中找到两个节点的最近公共祖先 【中等】]()
52-
- [ ] [BM39 序列化二叉树 【较难】]()
53-
- [ ] [BM40 重建二叉树 【中等】]()
54-
- [ ] [BM41 输出二叉树的右视图 【中等】]()
36+
- [ ] [23.二叉树的前序遍历 【简单】]()
37+
- [ ] [24.二叉树的中序遍历 【中等】]()
38+
- [ ] [25.二叉树的后序遍历 【简单】]()
39+
- [ ] [26.求二叉树的层序遍历 【中等】]()
40+
- [ ] [27.按之字形顺序打印二叉树 【中等】]()
41+
- [ ] [28.二叉树的最大深度 【简单】]()
42+
- [ ] [29.二叉树中和为某一值的路径(一) 【简单】]()
43+
- [ ] [30.二叉搜索树与双向链表 【中等】]()
44+
- [ ] [31.对称的二叉树 【简单】]()
45+
- [ ] [32.合并二叉树 【简单】]()
46+
- [ ] [33.二叉树的镜像 【简单】]()
47+
- [ ] [34.判断是不是二叉搜索树 【中等】]()
48+
- [ ] [35.判断是不是完全二叉树 【中等】]()
49+
- [ ] [36.判断是不是平衡二叉树 【简单】]()
50+
- [ ] [37.二叉搜索树的最近公共祖先 【简单】]()
51+
- [ ] [38.在二叉树中找到两个节点的最近公共祖先 【中等】]()
52+
- [ ] [39.序列化二叉树 【较难】]()
53+
- [ ] [40.重建二叉树 【中等】]()
54+
- [ ] [41.输出二叉树的右视图 【中等】]()
5555

5656
### 堆/栈/队列
5757

58-
- [ ] [BM42 用两个栈实现队列 【简单】]()
59-
- [ ] [BM43 包含min函数的栈 【简单】]()
60-
- [ ] [BM44 有效括号序列 【简单】]()
61-
- [ ] [BM45 滑动窗口的最大值 【较难】]()
62-
- [ ] [BM46 最小的K个数 【中等】]()
63-
- [ ] [BM47 寻找第K大 【中等】]()
64-
- [ ] [BM48 数据流中的中位数 【中等】]()
65-
- [ ] [BM49 表达式求值 【中等】]()
58+
- [ ] [42.用两个栈实现队列 【简单】]()
59+
- [ ] [43.包含min函数的栈 【简单】]()
60+
- [ ] [44.有效括号序列 【简单】]()
61+
- [ ] [45.滑动窗口的最大值 【较难】]()
62+
- [ ] [46.最小的K个数 【中等】]()
63+
- [ ] [47.寻找第K大 【中等】]()
64+
- [ ] [48.数据流中的中位数 【中等】]()
65+
- [ ] [49.表达式求值 【中等】]()
6666

6767
### 哈希
6868

69-
- [ ] [BM50 两数之和 【简单】]()
70-
- [ ] [BM51 数组中出现次数超过一半的数字 【简单】]()
71-
- [ ] [BM52 数组中只出现一次的两个数字 【中等】]()
72-
- [ ] [BM53 缺失的第一个正整数 【中等】]()
73-
- [ ] [BM54 三数之和 【中等】]()
69+
- [ ] [50.两数之和 【简单】]()
70+
- [ ] [51.数组中出现次数超过一半的数字 【简单】]()
71+
- [ ] [52.数组中只出现一次的两个数字 【中等】]()
72+
- [ ] [53.缺失的第一个正整数 【中等】]()
73+
- [ ] [54.三数之和 【中等】]()
7474

7575
### 递归/回溯
76-
- [ ] [BM55 没有重复项数字的全排列 【中等】]()
77-
- [ ] [BM56 有重复项数字的全排列 【中等】]()
78-
- [ ] [BM57 岛屿数量 【中等】]()
79-
- [ ] [BM58 字符串的排列 【中等】]()
80-
- [ ] [BM59 N皇后问题 【较难】]()
81-
- [ ] [BM60 括号生成 【中等】]()
82-
- [ ] [BM61 矩阵最长递增路径 【中等】]()
76+
- [ ] [55.没有重复项数字的全排列 【中等】]()
77+
- [ ] [56.有重复项数字的全排列 【中等】]()
78+
- [ ] [57.岛屿数量 【中等】]()
79+
- [ ] [58.字符串的排列 【中等】]()
80+
- [ ] [59.N皇后问题 【较难】]()
81+
- [ ] [60.括号生成 【中等】]()
82+
- [ ] [61.矩阵最长递增路径 【中等】]()
8383

8484
### 动态规划
8585

86-
- [x] [BM62 斐波那契数列 【入门】](动态规划/fibonacci.md)
87-
- [x] [BM63 跳台阶 【简单】](动态规划/jumpFloor.md)
88-
- [ ] [BM64 最小花费爬楼梯 【简单】]()
89-
- [ ] [BM65 最长公共子序列(二) 【中等】]()
90-
- [ ] [BM66 最长公共子串 【中等】]()
91-
- [ ] [BM67 不同路径的数目(一) 【简单】]()
92-
- [ ] [BM68 矩阵的最小路径和 【中等】]()
93-
- [ ] [BM69 把数字翻译成字符串 【中等】]()
94-
- [ ] [BM70 兑换零钱(一) 【中等】]()
95-
- [ ] [BM71 最长上升子序列(一) 【中等】]()
96-
- [ ] [BM72 连续子数组的最大和 【简单】]()
97-
- [ ] [BM73 最长回文子串 【中等】]()
98-
- [ ] [BM74 数字字符串转化成IP地址 【中等】]()
99-
- [ ] [BM75 编辑距离(一) 【较难】]()
100-
- [ ] [BM76 正则表达式匹配 【较难】]()
101-
- [ ] [BM77 最长的括号子串 【较难】]()
102-
- [ ] [BM78 打家劫舍(一) 【中等】]()
103-
- [ ] [BM79 打家劫舍(二) 【中等】]()
104-
- [ ] [BM80 买卖股票的最好时机(一) 【简单】]()
105-
- [ ] [BM81 买卖股票的最好时机(二) 【中等】]()
106-
- [ ] [BM82 买卖股票的最好时机(三) 【较难】]()
86+
- [x] [62.斐波那契数列 【入门】](动态规划/fibonacci.md)
87+
- [x] [63.跳台阶 【简单】](动态规划/jumpFloor.md)
88+
- [ ] [64.小花费爬楼梯 【简单】]()
89+
- [ ] [65.最长公共子序列(二) 【中等】]()
90+
- [ ] [66.最长公共子串 【中等】]()
91+
- [ ] [67.不同路径的数目(一) 【简单】]()
92+
- [ ] [68.矩阵的最小路径和 【中等】]()
93+
- [ ] [69.把数字翻译成字符串 【中等】]()
94+
- [ ] [70.兑换零钱(一) 【中等】]()
95+
- [ ] [71.最长上升子序列(一) 【中等】]()
96+
- [ ] [72.连续子数组的最大和 【简单】]()
97+
- [ ] [73.最长回文子串 【中等】]()
98+
- [ ] [74.数字字符串转化成IP地址 【中等】]()
99+
- [ ] [75.编辑距离(一) 【较难】]()
100+
- [ ] [76.正则表达式匹配 【较难】]()
101+
- [ ] [77.最长的括号子串 【较难】]()
102+
- [ ] [78.打家劫舍(一) 【中等】]()
103+
- [ ] [79.打家劫舍(二) 【中等】]()
104+
- [ ] [80.买卖股票的最好时机(一) 【简单】]()
105+
- [ ] [81.买卖股票的最好时机(二) 【中等】]()
106+
- [ ] [82.买卖股票的最好时机(三) 【较难】]()
107107

108108
### 字符串
109109

110-
- [ ] [BM83 字符串变形 【简单】]()
111-
- [ ] [BM84 最长公共前缀 【简单】]()
112-
- [ ] [BM85 验证IP地址 【中等】]()
113-
- [ ] [BM86 大数加法 【中等】]()
110+
- [ ] [83.字符串变形 【简单】]()
111+
- [ ] [84.最长公共前缀 【简单】]()
112+
- [ ] [85.验证IP地址 【中等】]()
113+
- [ ] [86.大数加法 【中等】]()
114114

115115
### 双指针
116116

117-
- [ ] [BM87 合并两个有序的数组 【简单】]()
118-
- [ ] [BM88 判断是否为回文字符串 【入门】]()
119-
- [ ] [BM89 合并区间 【中等】]()
120-
- [ ] [BM90 最小覆盖子串 【较难】]()
121-
- [ ] [BM91 反转字符串 【入门】]()
122-
- [ ] [BM92 最长无重复子数组 【中等】]()
123-
- [ ] [BM93 盛水最多的容器 【中等】]()
124-
- [ ] [BM94 接雨水问题 【较难】]()
117+
- [ ] [87.合并两个有序的数组 【简单】]()
118+
- [ ] [88.判断是否为回文字符串 【入门】]()
119+
- [ ] [89.合并区间 【中等】]()
120+
- [ ] [90.最小覆盖子串 【较难】]()
121+
- [ ] [91.反转字符串 【入门】]()
122+
- [ ] [92.最长无重复子数组 【中等】]()
123+
- [ ] [93.盛水最多的容器 【中等】]()
124+
- [ ] [94.接雨水问题 【较难】]()
125125

126126

127127
### 贪心算法
128128

129-
- [ ] [BM95 分糖果问题 【较难】]()
130-
- [ ] [BM96 主持人调度(二) 【中等】]()
129+
- [ ] [95.分糖果问题 【较难】]()
130+
- [ ] [96.主持人调度(二) 【中等】]()
131131

132132
### 模拟
133133

134-
- [ ] [BM97 旋转数组 【中等】]()
135-
- [ ] [BM98 螺旋矩阵 【简单】]()
136-
- [ ] [BM99 顺时针旋转矩阵 【中等】]()
137-
- [ ] [BM100 设计LRU缓存结构 【较难】]()
138-
- [ ] [BM101 设计LFU缓存结构 【较难】]()
134+
- [ ] [97.旋转数组 【中等】]()
135+
- [ ] [98.螺旋矩阵 【简单】]()
136+
- [ ] [99.顺时针旋转矩阵 【中等】]()
137+
- [ ] [100.设计LRU缓存结构 【较难】]()
138+
- [ ] [101.设计LFU缓存结构 【较难】]()

docs/manuscripts/solo-algorithm/interview-101/template.md

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# BM2 链表内指定区间反转
2+
3+
4+
5+
6+
### 题目链接
7+
8+
- [牛客网](https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca)
9+
- [欢迎讨论]()
10+
11+
### 题目描述
12+
13+
![反转链表.png](../images/reverseList.png)
14+
15+
16+
17+
### 思路
18+
19+
### 代码实现
20+
21+
@[code js](@code/algorithm/interview-101/reverseGroup.js)
22+
23+
24+
### 一些建议
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# BM3 链表中的节点每k个一组翻转
2+
3+
4+
5+
6+
### 题目链接
7+
8+
- [牛客网](https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca)
9+
- [欢迎讨论]()
10+
11+
### 题目描述
12+
13+
![反转链表.png](../images/reverseList.png)
14+
15+
16+
17+
### 思路
18+
19+
### 代码实现
20+
21+
@[code js](@code/algorithm/interview-101/reverseGroup.js)
22+
23+
24+
### 一些建议

docs/manuscripts/solo-algorithm/interview-101/链表/1.reverseList.md renamed to docs/manuscripts/solo-algorithm/interview-101/链表/reverseList.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
### 题目描述
1212

13-
![反转链表.png](./reverseList.png)
13+
![反转链表.png](../images/reverseList.png)
1414

1515

1616

0 commit comments

Comments
 (0)