https://leetcode.com/problems/sort-array-by-parity-ii Easy

Условие

Дан массив nums длины n, где n чётное. Половина элементов чётные, половина нечётные. Нужно вернуть массив, где на чётных индексах стоят чётные числа, а на нечётных индексах — нечётные.

Примеры

Input: nums = [4, 2, 5, 7] Output: [4, 5, 2, 7] Explanation: [4, 7, 2, 5] тоже допустимо.

Input: nums = [2, 3] Output: [2, 3]

Решение

fun sortArrayByParityII(nums: IntArray): IntArray {
    val result = IntArray(nums.size) // Массив для результата
    var evenIndex = 0 // Указатель для четных индексов
    var oddIndex = 1 // Указатель для нечетных индексов

    for (num in nums) {
        if (num % 2 == 0) {
            // Если число четное, добавляем его на четный индекс
            result[evenIndex] = num
            evenIndex += 2
        } else {
            // Если число нечетное, добавляем его на нечетный индекс
            result[oddIndex] = num
            oddIndex += 2
        }
    }

    return result // Возвращаем отсортированный массив
}

Временная сложность

O(N), где N — длина массива.

Пространственная сложность

O(N) для массива result.