Sunday, September 22, 2019

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

class Solution {
public:
    vector<int> sortArrayByParityII(vector<int>& A) {
        int iE = 0;// only check the Odd position
        for(int iO =1;iO<A.size();iO+=2) 
        {
             if (A[iO] %2 == 0)
             {
                 while(A[iE] %2 == 0)
                 {
                    iE +=2;
                 }
                int tmp = A[iE];
                 A[iE] = A[iO];
                 A[iO] = tmp;
             }          
        }
        return A;
    }
};

No comments:

Post a Comment