给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
/** 移动零* 非0左移,最后补0* *//*public void moveZeroes(int[] nums) {int slow = 0;for (int i =0;i<nums.length;i++){if (nums[i]!=0){nums[slow++]=nums[i];}}for (int j=slow;j< nums.length;j++){nums[j]=0;}}*//** 方法二 双指针 非0数跟上一个交换、0不动* */public void moveZeroes(int[] nums) {int length = nums.length,left=0,right=0;while(right<length){if (nums[right]!=0){swap(nums,left,right);left++;}right++;}}public void swap(int[] nums,int left,int right){int temp = nums[left];nums[left]=nums[right];nums[right] = temp;}