Skip to content

Commit 290c6b0

Browse files
committed
移动零题解
1 parent e17d1ff commit 290c6b0

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

数据结构/数组/283.移动零.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
## 题目
2+
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
3+
4+
## 思路
5+
1. 思路一:遍历数组将所有非零数字取出来放到临时数组中,接着讲数组剩余部分设置为 0,再复制到原数组。时间复杂度 O(n), 空间复杂度 O(n)
6+
2. 思路二:快慢指针,快指针遍历数组,如果遇到非零数字,且与慢指针不是指向同一元素,则彼此互换元素。
7+
8+
## 代码
9+
```js
10+
// 快慢指针解法
11+
var moveZeroes = function (nums) {
12+
let k = 0 //慢指针
13+
for(let i=1; i<nums.length; i++) { // 遍历数组
14+
if(nums[i] !== 0) {
15+
if(i !== k) {
16+
[ nums[i], nums[k] ] = [ nums[k], nums[i] ]
17+
}
18+
// 当数组里面没有 0 时,只需要移动指针就好
19+
k++
20+
}
21+
}
22+
}
23+
```

数据结构/数组/数组.md

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

88
> 通常使用两个或多个不同位置的指针,通过不同速度、方向来实现空间复杂度度为 O(1) 的算法。常用于有序数组
99
10-
- 283. 移动零
10+
- [283. 移动零](./283.移动零.md)
1111
- 27. 移除元素
1212
- 26. 删除排序数组中的重复项
1313
- 80. 删除排序数组中的重复项 II

0 commit comments

Comments
 (0)