移动零
题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 要求在参数nums本身上做处理而不是返回一个数组。
题解: 使用备用数组存放0的位置,用于后面替换
var moveZeroes = function(nums) {
let zero = [];
for(let i = 0; i < nums.length; i++){
if(nums[i] == 0){
zero.push(i);
}else if(zero.length > 0){
nums[zero[0]] = nums[i];
nums[i] = 0;
zero.shift();
zero.push(i);
}
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
方法二:记录不为0的数字,往末尾填充0
var moveZeroes = function(nums) {
let hasNum = 0;
for(let i = 0; i < nums.length; i++){
if(nums[i] != 0) {
nums[hasNum] = nums[i];
hasNum++;
}
}
for(let i = hasNum; i < nums.length; i++) nums[i] = 0;
};
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
上次更新: 2025/09/05, 8:09:00