1. 程式人生 > >LeetCode: 905. Sort Array By Parity

LeetCode: 905. Sort Array By Parity

題目描述

Given an array A of non-negative integers, return an array consisting of all the even elements of A, followed by all the odd elements of A.

You may return any answer array that satisfies this condition.

Example 1:

Input: [3,1,2,4]
Output: [2,4,3,1]
The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3]
would also be accepted.

Note:

1 <= A.length <= 5000
0 <= A[i] <= 5000

解題思路

一個遊標從左到右查詢奇數,一個遊標從右向左查詢偶數,然後交換這兩個數的位置。重複上述過程直到兩遊標相遇。

AC 程式碼

class Solution {
public:
    vector<int> sortArrayByParity(vector<int>& A) {
        vector<int> ans(A.begin(), A.end());

        int
i = 0, j = ans.size()-1; while(i < j) { while(i < j && ans[j]%2 == 1) --j; while(i < j && ans[i]%2 == 0) ++i; if(i < j) swap(ans[i++], ans[j--]); } return ans; } };