题目链接:283. 移动零 - 力扣(LeetCode)
暴力解法:
感觉像用了冒泡排序呢)只是把比较大小的if语句变成了判断是否为0.
1 class Solution { 2 public void moveZeroes(int[] nums) { 3 if(nums.length <= 1) return ; 4 // 0 0 1 3 12 5 for(int i = 0;i < nums.length;i++){ 6 for(int j = i+1;j < nums.length;j++){ 7 if(nums[i]==0){ 8 int temp = nums[i]; 9 nums[i] = nums[j]; 10 nums[j] = temp; 11 } 12 } 13 } 14 } 15 }
双指针:
第一个指针i从头开始遍历nums,第二个指针j指向0的位置。如果遍历到一个不为零的数就把这个数放到0的位置也就是j。
1 class Solution { 2 public void moveZeroes(int[] nums) { 3 int j = 0; 4 for(int i = 0; i < nums.length; i++){ 5 if(nums[i] != 0){ 6 int temp = nums[i]; 7 nums[i] = nums[j]; 8 nums[j] = temp; 9 j++; 10 } 11 } 12 } 13 }