One minute
Leetcode 905
Sort Array by Parity
Head on over here to try the problem for yourself.
I attempted a two-pointer approach to try and solve it.
Algorithm
The goal is to try to return the parity array in one pass. For this reason, I create a new array result[]
and two pointers, evenPtr
, pointing to the start of result[]
and oddPtr
, pointing to the end of result[]
. Now I loop over the initial array. If the element encountered is even, it is pushed at evenPtr
, and vice versa. The pointers are updated for the next iteration.
Code
public int[] sortByParity(int[] nums) {
int evenPtr = 0;
int oddPtr = nums.length - 1;
int[] result = new int[nums.length];
for(int i = 0; i < nums.length; i++) {
if(nums[i] % 2 == 0) result[evenPtr++] = nums[i];
else result[oddPtr--] = nums[i];
}
return result;
}