给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
方法:
var moveZeroes = function (nums) {
/**
* i = 0 nums[0] = 0
* i = 1 nums[1] = 1 nums[0] = 1 index = 1
* i = 2 nums[2] = 0
* i = 3 nums[3] = 3 nums[1] = 3 index = 2
* i = 4 nums[4] = 12 nums[2] = 4 index = 3
*/
let index = 0
for (let i = 0; i < nums.length; i++) {
// 当前元素如果不为0,则给数组重新复制,下标从0开始
if (nums[i] !== 0) {
nums[index++] = nums[i]
}
}
// 末尾补0
while (index < nums.length) {
nums[index++] = 0
}
};
const arr = [0,1,0,3,12]
moveZeroes(arr)