给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
双指针:交换
public void moveZeroes1(int[] nums){ if(nums==null || nums.length<2){ return; } int s=0; for(int f=0;f<nums.length;f++){ if(nums[f]!=0){ swap(nums,f,s); s++; } } } private void swap(int[] nums,int i,int j){ int temp=nums[i]; nums[i]=nums[j]; nums[j }
双指针:覆盖
public void moveZeroes2(int[] nums){ int s=0; for(int f=0;f<nums.length;f++){ if(nums[f]!=0){ nums[s++]=nums[f]; } } for(int i=s;i<nums.length;i++){ nums[i]=0; } }
原文:https://www.cnblogs.com/iwyc/p/15310760.html