問題描述
給定一個非負整數數組 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
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
執行結果
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL1kkeOlXT65EMNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyADN4IjN1kDM0AjMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
代碼描述
思路:笨方法。新開辟一個數組,用另個指針從頭掃描原數組,一個指針尋找偶數,一個指針尋找奇數,然後把尋找到的數字按照奇偶下标,依次放入新數組,最後傳回結果。時間複雜度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;
}
};