JS-移動零
阿新 • • 發佈:2018-12-02
給定一個數組 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 };