天天看點

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
           

來源:力扣(LeetCode)

連結:https://leetcode-cn.com/problems/sort-array-by-parity-ii

著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

執行結果

LeetCode—— 922 按奇偶排序數組II

代碼描述

思路:笨方法。新開辟一個數組,用另個指針從頭掃描原數組,一個指針尋找偶數,一個指針尋找奇數,然後把尋找到的數字按照奇偶下标,依次放入新數組,最後傳回結果。時間複雜度O(n), 空間複雜度O(n)

class Solution {
public:
    vector<int> sortArrayByParityII(vector<int>& A) {
        vector<int> res;
        int i = 0, j = 0;  // i找奇數,j找偶數
        while(i < A.size() && j < A.size())
        {
            while(j < A.size() && A[j]%2 == 1)  // 找偶數
                ++j;
            res.push_back(A[j]);
            ++j;
            while(i < A.size() && A[i]%2 == 0)  // 找奇數
                ++i;
            res.push_back(A[i]);
            ++i;
        }
        return res;
    }
};
           

繼續閱讀