Упорядочивание имён по убывающему росту

Свяжите каждое имя с соответствующим ростом по индексу, отсортируйте пары по росту по убыванию и верните только имена. Исходные массивы менять не нужно.

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

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

Свяжите каждое имя с соответствующим ростом по индексу, отсортируйте пары по росту по убыванию и верните только имена. Исходные массивы менять не нужно.

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

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

Условие

Реализуйте функцию, принимающую два списка — массив имён людей и массив их роста — и возвращающую массив имён, отсортированных по убыванию роста. Например, при входных данных names = ["Иван", "Мария", "Пётр"] и heights = [170, 165, 180] функция должна вернуть ["Пётр", "Иван", "Мария"].

Ответ

Свяжите каждое имя с соответствующим ростом по индексу, отсортируйте пары по росту по убыванию и верните только имена. Исходные массивы менять не нужно.

function sortPeople(names, heights) {
  if (names.length !== heights.length) throw new Error('Разная длина массивов');
  return names.map((name, index) => ({ name, height: heights[index], index }))
    .sort((a, b) => b.height - a.height || a.index - b.index)
    .map(item => item.name);
}

Для примера получится Пётр, Иван, Мария. При одинаковом росте явно сохраняется исходный порядок. Предполагаются конечные числовые значения роста. Время O(n log n), память O(n) для пар и результата.

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

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

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

Подробнее