publicvoidmoveZeroes(int[] nums){// base case,数组为空时返回0if(nums.length ==0)return;// 记录元素为0的下标int index =0;// 遍历数组for(int i =0; i < nums.length; i++){// 找到不为0的元素时,与元素为0对应下标进行交换if(nums[i]!=0){// 当前值和赋为0的位置,赋值完后index下标后移
nums[index++]= nums[i];}}// 遍历一次后在index前的元素都已经不包含0,且有序了,只需让index后的值归零就可以了for(int i = index; i < nums.length; i++){
nums[i]=0;}}
法二
// 法二publicvoidmoveZeroes(int[] nums){// base case,数组为空时返回0if(nums.length ==0)return;int j =0;for(int i =0; i < nums.length; i++){// 当前值不为0,交换if(nums[i]!=0){int tmp = nums[i];
nums[i]= nums[j];
nums[j++]= tmp;}}}