Back to Leetcode Go

922. Sort Array By Parity II

website/content.en/ChapterFour/0900~0999/0922.Sort-Array-By-Parity-II.md

1.7.971.2 KB
Original Source

922. Sort Array By Parity II

Problem

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 1:


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

Problem Summary

Place odd numbers at odd indices and even numbers at even indices in the array.

Solution

This problem is relatively simple. Use two indices to control where odd and even numbers should be placed. The order among odd numbers and among even numbers can be unordered.

Code

go

package leetcode

func sortArrayByParityII(A []int) []int {
	if len(A) == 0 || len(A)%2 != 0 {
		return []int{}
	}
	res := make([]int, len(A))
	oddIndex := 1
	evenIndex := 0
	for i := 0; i < len(A); i++ {
		if A[i]%2 == 0 {
			res[evenIndex] = A[i]
			evenIndex += 2
		} else {
			res[oddIndex] = A[i]
			oddIndex += 2
		}
	}
	return res
}