Извлечение элементов с нечётными индексами без создания новых массивов

Текст и пример противоречат друг другу: a, c, e, g имеют чётные индексы. Сожмите массив двумя указателями; параметр parity определяет, какие исходные индексы сохранить.

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

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

Текст и пример противоречат друг другу: a, c, e, g имеют чётные индексы. Сожмите массив двумя указателями; параметр parity определяет, какие исходные индексы сохранить.

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

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

Условие

Необходимо получить из массива только те элементы, которые находятся на нечётных позициях (по индексу, начиная с 0), при этом изменяя исходный массив — дополнительные массивы создавать нельзя.

const data = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];

console.log(evenIndexElements); // ['a', 'c', 'e', 'g']

Ответ

Текст и пример противоречат друг другу: a, c, e, g имеют чётные индексы. Сожмите массив двумя указателями; параметр parity определяет, какие исходные индексы сохранить.

function keepIndexParity(array, parity = 0) {
  let write = 0;
  for (let read = parity; read < array.length; read += 2) {
    array[write++] = array[read];
  }
  array.length = write;
  return array;
}

Для приведённого результата используйте parity = 0, для нечётных индексов из текста — parity = 1. Допускаются только эти два значения. Запись всегда идёт не правее чтения, поэтому ещё не обработанные элементы не затираются. Время O(n), дополнительная память O(1), меняется именно исходный плотный массив.

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

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

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

Подробнее