给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
- 将所有的非0向前移动
- 从非0的最后位置开始遍历填充0
let moveZeros = nums => {
let idx = 0;
nums.forEach(num => {if (num !== 0) nums[idx++] = num});
while (idx < nums.length) {
nums[idx++] = 0;
}
return nums;
};
console.log(moveZeros([0,1,0,3,12]))
func moveZeroes(nums []int) {
idx := 0
for _, num := range nums {
if num != 0 {
nums[idx] = num
idx++
}
}
for idx < len(nums) {
nums[idx] = 0
idx++
}
fmt.Println(nums)
}
class Solution {
public void moveZeroes(int[] nums) {
int idx = 0;
for (int num : nums) {
if (num != 0) nums[idx++] = num;
}
while (idx < nums.length) {
nums[idx++] =0;
}
}
}