Skip to main content

21 调整数组顺序使奇数位于偶数前面

牛客

描述

输入一个长度为 n 整数数组,数组里面可能含有相同的元素,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,对奇数和奇数,偶数和偶数之间的相对位置不做要求,但是时间复杂度和空间复杂度必须如下要求。

要求:时间复杂度 O(n),空间复杂度 O(1)

两个指针,一个从前往后移动遇到偶数,一个从后往前遇到奇数,然后交换

public int[] reOrderArrayTwo (int[] array) {
int i=0;
int j=array.length-1;
int t;
while(true){
while(i<array.length && (array[i] & 1)!=0 ){
++i;
}
while(j>=0 && (array[j] & 1)==0 ){
--j;
}
if(i>j) break;
t=array[i];
array[i]=array[j];
array[j]=t;
}
return array;
}