905. Sort Array By Parity

1. Description

Given an integer array nums, move all the even integers at the beginning of the array followed by all the odd integers.
Return any array that satisfies this condition.

2. Example

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

Example 2:
Input: nums = [0]
Output: [0]

3. Constraints

  • 1 <= nums.length <= 5000
  • 0 <= nums[i] <= 5000

4. Solutions

Two Pointers

n = nums.size()
Time complexity: O(n)
Space complexity: O(1)

class Solution {
public:
    vector<int> sortArrayByParity(vector<int> nums) {
        for (int left = 0, right = nums.size() - 1; left < right; ++left, --right) {
            while (left < right && (nums[left] & 1) == 0) {
                ++left;
            }

            while (left < right && (nums[right] & 1) == 1) {
                --right;
            }

            swap(nums[left], nums[right]);
        }

        return nums;
    }
};
comments powered by Disqus