Задача в код-редакторе: есть два массива, полученных с разных серверов, в каждом массиве записи с уникальными сквозными id (не повторяющимися между массивами). Нужно написать функцию, которая принимает эти два массива и число k, и возвращает k элементов с наибольшими id в порядке убывания.

Если массивы не гарантированно отсортированы, объедините их, отсортируйте по id по убыванию и возьмите первые k элементов.

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

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

Если массивы не гарантированно отсортированы, объедините их, отсортируйте по id по убыванию и возьмите первые k элементов.

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

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

Если массивы не гарантированно отсортированы, объедините их, отсортируйте по id по убыванию и возьмите первые k элементов.

Для числовых конечных id и целого неотрицательного k:

function topById(a, b, k) {
  if (!Number.isInteger(k) || k < 0) throw new RangeError('k');
  return [...a, ...b].sort((x, y) => y.id - x.id).slice(0, k);
}

Исходные массивы не изменяются; при k больше длины вернутся все элементы. Сложность O(n log n). Если оба источника уже упорядочены, можно сливать только нужные k элементов; для очень большого неупорядоченного набора подойдёт min-heap размера k.

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

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

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

Подробнее