LeetCode初級演算法:移動零Move Zeroes
阿新 • • 發佈:2019-02-02
移動零
給定一個數組 nums
,編寫一個函式將所有 0
移動到陣列的末尾,同時保持非零元素的相對順序。
示例:
輸入:[0,1,0,3,12]
輸出:[1,3,12,0,0]
說明:
- 必須在原陣列上操作,不能拷貝額外的陣列。
- 儘量減少操作次數。
按照題目意思說要儘量精簡,所以這裡設定一個變數Count來累計為0的數量,在迴圈中,如果有不為0的數,替換兩個位置,將數值為0的往後移動,結果如下:
public void MoveZeroes(int[] nums) { int count = 0; for(int i = 0; i < nums.Length; i++) { if(nums[i]== 0) { count++; } else { if (count > 0) { nums[i - count] = nums[i]; nums[i] = 0; } } } }