給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。
我寫的代碼思路是從開始元素找0,找到了就將這個0后面的元素向前移一位
class Solution {public void moveZeroes(int[] nums) {int n = nums.length;for(int i = 0;i<n;i++){if(nums[i] == 0){for(int j = i;j<n-1;j++){nums[j]=nums[j+1];//移位}nums[n-1]=0;n--;i--;//由于數組改變,i位需要在判斷一次是否為0}}}
}
看到的更好的代碼:
思路是將不為零的元素重新排列,末尾補0
class Solution {public void moveZeroes(int[] nums) {int i = 0;for(int x:nums){if(x!=0)nums[i++] = x; }for(int j = i;j<nums.length;j++)nums[j] = 0;}
}