1. 程式人生 > >Leetcode __922. 按奇偶排序陣列 II

Leetcode __922. 按奇偶排序陣列 II

問題描述

給定一個非負整數陣列 A, A 中一半整數是奇數,一半整數是偶數。 對陣列進行排序,以便當 A[i] 為奇數時,i 也是奇數;當 A[i] 為偶數時, i 也是偶數。 你可以返回任何滿足上述條件的陣列作為答案。

示例: 輸入:[4,2,5,7] 輸出:[4,5,2,7] 解釋:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也會被接受。

提示: 2 <= A.length <= 20000 A.length % 2 == 0 0 <= A[i] <= 1000

解題思路

  • 按部就班,先分別取奇數偶數值,分別排序,再組裝到同一陣列中返回

實現

class Solution {
    public int[] sortArrayByParityII(int[] A) {
        if(A.length==0||A==null){
            return new int[0];
        }
        int[] odd = new int[A.length/2];//奇數
        int[] even = new int[A.length/2];//偶數
        int o=0;
        int e =0;
        for(int i=0;i<A.length;i++){
            if(A[i]%2==0){
                even[e++]=A[i];
            }else {
               odd[o++]=A[i];
            }
        }
        Arrays.sort(even);
        Arrays.sort(odd);
        int r =0;
        int w=0;
        for (int i =0;i<A.length;i=i+2){
            A[i]=even[r++];
            A[i+1]=odd[w++];
        }
        return A;

    }
}