usage-vitepress
信息提示、块折叠、多tab
bash
# ::: [info | tip | warning | danger | details] 标题名
info box
# :::
1
2
3
2
3
bash
# ::: details 标题名
内部可以展示任何markdown语法
# :::
1
2
3
2
3
bash
# ::: code-group
#```js [标题名]
<!-- code -->
#```
# :::
1
2
3
4
5
6
7
2
3
4
5
6
7
引入其他文件
使用<!--@include: file-path -->
即可
typescript
// 引入的例子
/**
给定一个整数数组 `nums` 和一个整数目标值 `target`,请你在该数组中找出 **和为目标值** _`target`_ 的那 **两个** 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
**示例 1:**
```
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
```
**示例 2:**
```
输入:nums = [3,2,4], target = 6
输出:[1,2]
```
**示例 3:**
```
输入:nums = [3,3], target = 6
输出:[0,1]
```
**提示:**
- `2 <= nums.length <= 10<sup>4</sup>`
- `-10<sup>9</sup> <= nums[i] <= 10<sup>9</sup>`
- `-10<sup>9</sup> <= target <= 10<sup>9</sup>`
- **只会存在一个有效答案**
*/
// 使用暴力解法:for/forEach+for/forEach/(indexOf+includes+shift)
function twoSum (nums: number[], target: number): number[] {
const len: number = nums.length
if (len > 1) {
for (let i = 0; i < len - 1; i++) {
for (let j = i + 1; j < len; j++) {
if (nums[i] + nums[j] === target) {
return [i, j]
}
}
}
}
return []
}
function twoSum1 (nums: number[], target: number): number[] {
return (function (): number[] {
for (let i = 0, len = nums.length; i < len - 1; i++) {
if (len < 2) return []
const diff = target - nums[i]
if (nums.includes(diff, i + 1)) {
// arr.of(...nums): 根据参数创建一个新的数组
// arr.indexOf(search, fromIndex):从fromIndex开始查找search
return Array.of(i, nums.indexOf(diff, i + 1))
}
}
return []
})()
}
// 使用map结合for/forEach/数组方法
function twoSum2 (nums: number[], target: number): number[] {
const map: Map<number, any> = new Map()
return nums.map((num, index) => {
if (map.has(target - num)) {
return [map.get(target - num), index]
}
map.set(num, index)
}).filter(n => n !== undefined).flat()
}
function twoSum3 (nums: number[], target: number): number[] {
const map: Map<number, any> = new Map()
for (let i = 0, length = nums.length; i < length; i++) {
const diff = target - nums[i]
if (map.has(diff)) {
return [map.get(diff), i]
}
map.set(nums[i], i)
}
return []
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
在md中使用vue组件
对于style预处理器,需要先安装,比如sass、less、stylus
直接使用:
可直接使用vue的script
、style
标签,而模板则不需要template标签包裹
引入组件:
先通过script
标签import导入组件,然后直接使用该组件即可,和vue一样
vitepress插件
- @nolebase/vitepress-plugin-enhanced-readabilities:阅读增强,可自由切换布局
- @nolebase/vitepress-plugin-highlight-targeted-heading:闪烁高亮当前的目标标题