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
// Two pointers with extra space
vector<int> sortArrayByParity(vector<int>& A) { // time: O(n); space: O(n)
if (A.empty()) return {};
int n = A.size(), even_ptr = 0, odd_ptr = n - 1;
vector<int> res(n);
for (int num : A) {
if (num & 0x1) { // odd
res[odd_ptr--] = num;
} else { // even
res[even_ptr++] = num;
}
}
return res;
}
// In-Place Swap
vector<int> sortArrayByParity(vector<int>& A) { // time: O(n); space: O(1)
for (int i = 0, j = 0; j < A.size(); ++j) {
if (!(A[j] & 0x1)) swap(A[i++], A[j]);
}
return A;
}
Last updated
Was this helpful?