題解一:
? ? ? ? 雙指針遍歷:將非零的值往數組前端依次放置,將放置之后數組后端多余的位置都置為0,參考下圖(來源. - 力扣(LeetCode))
class Solution {public void moveZeroes(int[] nums) {int index = 0;for (int i = 0; i < nums.length; i++) {if (nums[i] != 0) {nums[index] = nums[i];index++;}}for (int i = index; i < nums.length; i++) {nums[i] = 0;}}
}
題解二:
? ? ? ? 雙指針遍歷:類似快速排序,以0作為參照點,將不等于0的值放到左邊,將等于0的值放到右邊 (二者交換),參考下圖(來源. - 力扣(LeetCode))
class Solution {public void moveZeroes(int[] nums) {int index = 0;for (int i = 0; i < nums.length; i++) {if (nums[i] != 0) {int temp = nums[i];nums[i] = nums[index];nums[index] = temp;index++;}}}
}