Программа курса:
Разбор задачи: Сортировка массива по чётности II
Предложенный нами код решения:
def sortArrayByParityII(nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
even_index = 0 # Указатель для чётных позиций
odd_index = 1 # Указатель для нечётных позиций
result = [0] * len(nums) # Инициализируем массив для результата
for num in nums:
if num % 2 == 0: # Если число чётное
result[even_index] = num
even_index += 2
else: # Если число нечётное
result[odd_index] = num
odd_index += 2
return resultИнициализация указателей и результата
Мы создаём два указателя:even_index, который отвечает за чётные индексы (начинается с 0).odd_index, который отвечает за нечётные индексы (начинается с 1).
Также создаётся массивresult, который будет заполняться числами из входного массива. Его длина совпадает с длиной исходного массива, и изначально он заполнен нулями.
even_index = 0 odd_index = 1 result = [0] * len(nums)
Проход по массиву
nums
Мы перебираем все числа из массиваnums. Для каждого числа:- Если число чётное (
num % 2 == 0), оно размещается в позиции, на которую указываетeven_index. После этогоeven_indexувеличивается на 2, чтобы указывать на следующую чётную позицию. - Если число нечётное (
num % 2 != 0), оно размещается в позиции, на которую указываетodd_index. После этогоodd_indexувеличивается на 2, чтобы указывать на следующую нечётную позицию.
for num in nums: if num % 2 == 0: result[even_index] = num even_index += 2 else: result[odd_index] = num odd_index += 2- Если число чётное (
Возврат результата
После распределения всех чисел массивresultсодержит числа в требуемом порядке. Его возвращает функция.return result
Как работает пример
Рассмотрим работу алгоритма на примере:
Входные данные: nums = [4, 2, 5, 7]
- Начальные значения:
even_index = 0odd_index = 1result = [0, 0, 0, 0]
- Проход по массиву:
4: чётное, помещается вresult[0],even_indexувеличивается до 2.
Результат:[4, 0, 0, 0]2: чётное, помещается вresult[2],even_indexувеличивается до 4.
Результат:[4, 0, 2, 0]5: нечётное, помещается вresult[1],odd_indexувеличивается до 3.
Результат:[4, 5, 2, 0]7: нечётное, помещается вresult[3],odd_indexувеличивается до 5.
Результат:[4, 5, 2, 7]
- Итог: функция возвращает
[4, 5, 2, 7].
Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии