Упорядочивание нечётных элементов массива

Извлеките нечётные значения, отсортируйте их отдельно и последовательно верните на места нечётных элементов. Чётные значения и их индексы сохраняются.

Короткий ответ

Что ответить на собеседовании

Извлеките нечётные значения, отсортируйте их отдельно и последовательно верните на места нечётных элементов. Чётные значения и их индексы сохраняются.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо реализовать функцию, которая сортирует только нечётные числа внутри переданного массива, оставляя чётные элементы на их местах без изменения порядка.

Ответ

Извлеките нечётные значения, отсортируйте их отдельно и последовательно верните на места нечётных элементов. Чётные значения и их индексы сохраняются.

function sortOdd(numbers) {
  const sorted = numbers.filter(number => number % 2 !== 0).sort((a, b) => a - b);
  let index = 0;
  return numbers.map(number => number % 2 !== 0 ? sorted[index++] : number);
}

Числовой comparator обязателен: стандартный sort без него сравнивает строковые представления. Проверка остатка через !== 0 поддерживает отрицательные нечётные числа. Входной массив не меняется. Время O(n + k log k) для k нечётных элементов.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее