1. 程式人生 > >JS-移動零

JS-移動零

給定一個數組 nums,編寫一個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。

示例

輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]

說明

必須在原陣列上操作,不能拷貝額外的陣列。
儘量減少操作次數。
首先迴圈這個陣列,將陣列中所有不是0的數字,拿出來放到陣列前面
  let k = 0;
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] !== 0) {
            nums[k++] = nums[i];
        }
    }
因為要保持原陣列非零元素的相對順序,所以每當遇到一個不為0的變數都要進行復制!
最後遍歷結束,那麼會有K個不為0的變數,隨後的nums.length-K的長度都是0
下面是詳細程式碼
var moveZeroes = function(nums) {
    let k = 0;
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] !== 0) {
            nums[k++] = nums[i];
        }
    }
    for (let j = k; j < nums.length; j++) {
        nums[j] = 0;
    }
    return nums
};