给定一个由正数,负数和0组成的整数数组,将所有为0的元素,挪到数组末尾。要求时间复杂度O(n)。
public class T1 {
public static void solve(int arr[]) {
int len = arr.length;
int arr2[] = new int[len];
int j = 0, count = 0;
for(int i = 0; i < len; i++) {
if(arr[i] != 0) {
arr2[j++] = arr[i];
} else {
count ++;
}
}
while(count > 0) {
arr2[j++] = 0;
count --;
}
for(int k = 0; k < len; k++) { //打印
System.out.print(arr2[k] + " ");
}
}
public static void main(String[] args) {
int arr[] = {0,-1,1,0,-2,2,0,3}; //给定一个数组,这里以[0,-1,1,0,-2,2,0,3]为例
solve(arr);
}
}