思路很简单,双指针,从数组两头向中间靠近。左边的为奇数指针,右边的为偶数指针。左边指针在没有遇到偶数时,就向右移动,遇到偶数立即停止;右边指针再没有遇到奇数时,向左边移动,遇到奇数时,进行奇偶指针元素交换。交换之后切换到奇数指针工作。这个方法只遍历一遍数组,时间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;
    }
}