一箭 11 飛,SpaceX 第 33 批星鏈衛星上天:累計發射 1942 顆
阿新 • • 發佈:2021-12-19
283. 移動零
檢視原題
解題思路
- 將right賦值為nums.length-1,代表當前連續0開始的位置
- lef賦值為 0 表示當前陣列掃描的位置
- 從左到右掃描陣列,如果當前項是 0 則將從陣列當前項到連續0開始位置之間的陣列項都向前移動一位,然後在後面補0,同時更新 right-- ,不在更新left,防止有連續的0,再次回到這個位置
- 如果當前項不是0 則更新left++
程式碼
/** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */ var moveZeroes = function(nums) { let left; //左指標,開始迴圈 let length = nums.length; let right = length - 1; //右指標的最開始位置 for (left = 0; left <= right;) { // 如果當前項是0則將當前項之後的數值向前移一位 if (nums[left] === 0) { for (let j = left + 1; j <= right; j++) { nums[j - 1] = nums[j] } nums[right] = 0; right--; } else { left++; } } };