283.给定一个数组nums,写一个函数,将数组中所有的0挪到数组的末尾,而维持其他所有非0元素的相对位置
举例 nums=[0,1,0,3,12] ----> [ 1,3,12,0,0]
做法1:可以创建一个临时数组来存储不等与0的数。
public static int [] moveZeros(int arr[]){ int temp[]= new int[arr.length]; int j=0; for (int i = 0; i <arr.length ; i++) { if (arr[i]!=0){ temp[j]=arr[i]; j++; } } for (int i = 0; i <temp.length ; i++) { arr[i]=temp[i]; } for (int i = temp.length; i <arr.length ; i++) { arr[i]=0; } return arr; }
做法2:双指针,定义一个临时变量k
public static int [] moveZeros2(int arr[]){ int k =0; for (int i = 0; i < arr.length; i++) { if (arr[i]!=0){ arr[k]=arr[i]; k++; } } for (int i =k;i<arr.length;i++){ arr[i]=0; } return arr; }