# Sort Array By Parity LeetCode Solution

Difficulty Level Easy

## Problem Statement

The Sort Array By Parity LeetCode Solution – “Sort Array By Parity” states that you are given an integer array `nums`, move all the even integers at the beginning of the array followed by all the odd integers.

Note: Return any array that satisfies this condition.

### Example:

Input: Output: All the even numbers of array (2, 4, 6) moved to the beginning while the odd numbers (3, 1, 5) of array are placed at the end.

Note: There could be other outputs as well {4, 2, 6, 1, 3, 5}, {6, 4, 2, 3, 5, 1}, etc.

## Brute Force

Approach: Traverse the given input array nums, if number found to be as even we will place it in new output array and increment the array pointer. Traverse the given input array again, if number found to be as odd we will start placing them in output array from where the last even number is placed.

## Code:

### C++ Program of Sort Array By Parity

```class Solution {
public:
vector<int> sortArrayByParity(vector<int>& nums) {
vector<int> output;
for (auto it = nums.begin(); it != nums.end(); it++)
{
if((*it) % 2 == 0)
output.push_back(*it);
}
for (auto it = nums.begin(); it != nums.end(); it++)
{
if((*it) % 2 != 0)
output.push_back(*it);
}
return output;
}
};```

### Java Program of Sort Array By Parity

```class Solution {
public int[] sortArrayByParity(int[] nums) {
int result[];
int p = 0;

result = new int[nums.length];

for (int i = 0; i < nums.length; i++)
if (nums[i] % 2 == 0)
{
result[p] = nums[i];
p++;
}

for (int i = 0; i < nums.length; i++)
if (nums[i] % 2 != 0)
{
result[p] = nums[i];
p++;
}

return result;
}
}```

## Complexity Analysis

### Time Complexity

Time Complexity of above code is O(2n) which is O(n) as we are traversing the array twice.

### Space Complexity

Space Complexity of above code is O(n) as we are using a separate array to store the result.

## Optimized Solution

Approach: We will use a two pointer approach left and right, where left is initialized to 0 while right is initialized to arr_size – 1.

Traverse an array from start:

• If number is odd swap it nums[right] and decrement the right pointer
• If number is even just increment the left pointer

## Code:

### C++ Program of Sort Array By Parity LeetCode Solution

```class Solution {
public:
vector<int> sortArrayByParity(vector<int>& nums) {

int left = 0;
int right = nums.size() - 1;

while(left < right )
{
if(nums[left] % 2 != 0)
{
swap(nums[left], nums[right--]);
}
else
{
left++;
}

}
return nums;
}
};```

### Java Program of Sort Array By Parity LeetCode Solution

```class Solution {
public int[] sortArrayByParity(int[] nums) {
int left = 0;
int right = nums.length - 1;
while(left < right )
{
if(nums[left] % 2 != 0)
{
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
right--;
}
else
{
left++;
}
}
return nums;
}
}```

## Complexity Analysis

### Time Complexity

Time Complexity of above code is O(n) as in this approach are traversing the array only once.

### Space Complexity

Space Complexity of above code is O(1) as no additional space is required.

Translate »