小白js硬啃leetcode算法-移动0(数组简单-283)-5

66 阅读1分钟

题目

283、给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

范例: 输入:[0,1,0,3,12]
输出 [1,3,12,0,0]

双指针法

  • 解题思路:
    • 遍历数组,创建两个指针,左指针标识当前指向的位置,右指针指向替换0后的位置
  • 复杂度
    • 时间复杂度:O(n)
    • 空间复杂度: O(1)
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
};