[leetcode] problem 922 – sort array by parity ii

Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even.

Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i] is even, i is even.

You may return any answer array that satisfies this condition.

Example

Input: [4,2,5,7]

Output: [4,5,2,7]

Explanation: [4,7,2,5], [2,5,4,7], [2,7,4,5] would also have been accepted.

Note

  • 2 <= A.length <= 20000
  • A.length % 2 == 0
  • 0 <= A[i] <= 1000

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public int[] sortArrayByParityII(int[] A) {
int left = 0;
int right = A.length - 1;

for (; left < A.length - 1 ; left += 2) {
if (A[left] % 2 != 0) {
while (right > 0 && A[right] % 2 != 0)
right -= 2;

int temp = A[left];
A[left] = A[right];
A[right] = temp;
}
}

return A;
}