# ❓ 周一算法题之「移动零」
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 复制代码说明:
- 必须在原数组上操作,不能拷贝额外的数组。
- 尽量减少操作次数。
let arr = [0, 1, 0, 3, 12]
let arr2 = [3, 0, 1, 0, 0, 7, 0, 0, 3, 12]
function moveZeroToLast(arr) {
// 零出现个数
let count = 0
for (let i = 0, length = arr.length; i < length; i++) {
if (arr[i] === 0) {
count++
} else if (count !== 0) {
// 当前 索引 i - 零个数 index = 第一个零出现位置
arr[i - count] = arr[i]
arr[i] = 0
}
}
return arr
}
console.log(moveZeroToLast(arr2))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19