两次遍历:

  • 1.奇数个数a+偶数个数b=数组长度N
  • 2.保证相对位置不变,那么两次遍历
    • 一次从前往后搞定奇数
    • 一次从后往前搞定偶数
      public int[] reOrderArray (int[] array) {
        if(array==null||array.length==0) return new int[]{};
        int N = array.length;
        int[] res = new int[N];
        //从左到右扫一遍,将奇数放到左边
        int w = 0;
        for(int a:array){
            if((a&1)!=0){
                res[w++] = a;
            }
        }
        //从右往左扫一遍,将偶数放到右边
        w = N-1;
        for(int i = N-1;i>=0;i--){
            if((array[i]&1)==0){
                res[w--] = array[i];
            }
        }
        return res;
      }