题目
283、给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
范例:
输入:[0,1,0,3,12]
输出 [1,3,12,0,0]
双指针法
- 解题思路:
- 遍历数组,创建两个指针,左指针标识当前指向的位置,右指针指向替换0后的位置
- 复杂度
- 时间复杂度:O(n)
- 空间复杂度: O(1)
- 时间复杂度:O(n)
const moveZeroes = function(nums) {
for( let i=0, j= 0; i+j<nums.length;){
if( nums[i] === 0 ){
nums.push(...nums.splice(i, 1))
j++
}else {
i++
}
}
return nums
};