> For the complete documentation index, see [llms.txt](https://anton-veselskyi.gitbook.io/codding-problems-solutions/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://anton-veselskyi.gitbook.io/codding-problems-solutions/leetcode/easy/sort-array-by-parity.md).

# Sort Array By Parity

## [Sort Array By Parity](https://leetcode.com/problems/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. `1 <= A.length <= 5000`
2. `0 <= A[i] <= 5000`

## Solutions

### 🧠 Cpp

```cpp
class Solution
{
public:
    vector<int> sortArrayByParity(vector<int>& A)
    {
        if(A.empty())
            return A;

        auto iter0 = begin(A),
             iter1 = --end(A);

        //O(N) two-pointers in-place solution
        while(iter0 < iter1)
        {
            if(*iter0 % 2 == 1 && *iter1 % 2 == 0)
                std::swap(*iter0, *iter1);
            if(*iter0 % 2 == 0)
                ++iter0;
            if(*iter1 % 2 == 1)
                --iter1;
        }

        return A;
    }
};
```
