思路很简单,双指针,从数组两头向中间靠近。左边的为奇数指针,右边的为偶数指针。左边指针在没有遇到偶数时,就向右移动,遇到偶数立即停止;右边指针再没有遇到奇数时,向左边移动,遇到奇数时,进行奇偶指针元素交换。交换之后切换到奇数指针工作。这个方法只遍历一遍数组,时间o(n),空间o(1)。
import java.util.*;
public class Solution {
public int[] reOrderArrayTwo (int[] array){
int low = 0;
int high = array.length-1;
while(low<high){
while(low<high&&array[low]%2==1)++low;
while(low<high&&array[high]%2==0)--high;
if(low<high){
int temp = array[low];
array[low] = array[high];
array[high] = temp;
}
}
return array;
}
}