这题的关键在于尽量减少运算次数,如果用swap,因为swap的内部机制是3次操作,因此我舍弃了这种方法。
如下的方法的运算次数应该是N+numOfZeros。
1 public class Solution { 2 public void moveZeroes(int[] nums) { 3 int index = 0; 4 int numOfZeros = 0; 5 for (int i = 0; i < nums.length; i++) 6 { 7 if (nums[i] == 0) 8 { 9 numOfZeros++; 10 } 11 else 12 { 13 nums[index++] = nums[i]; 14 } 15 } 16 for (int i = 0; i < numOfZeros; i++) 17 { 18 nums[nums.length-1-i] = 0; 19 } 20 } 21 }