922. Sort Array By Parity II

【题目】

Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even.

Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i] is even, i is even.

You may return any answer array that satisfies this condition.

 

Example 1:

Input: [4,2,5,7]
Output: [4,5,2,7]
Explanation: [4,7,2,5], [2,5,4,7], [2,7,4,5] would also have been accepted.

 

Note:

  1. 2 <= A.length <= 20000
  2. A.length % 2 == 0
  3. 0 <= A[i] <= 1000

【题意】

奇数的index放置奇数元素,偶数的index放置偶数元素,返回。

【解答】

两个指针,一个从前到后扫描偶数index,一个从后到前扫描奇数index,swap不符合要求的元素

时间 O(N) 空间O(1)

class Solution {
public:
    vector<int> sortArrayByParityII(vector<int>& A) {
        int len = A.size();
        int i = 0, j = len - 1;
        while(i<len && j>=0){
            if(A[i] % 2 == 0){
                i += 2;
                continue;
            }
            if(A[j] % 2 != 0){
                j -= 2;
                continue;
            }
            int temp = A[j];
            A[j] = A[i];
            A[i] = temp;
        }
        return A;
    }
};

 

posted @ 2019-01-23 17:57  xxxinn  阅读(121)  评论(0)    收藏  举报