Напишите функцию, объединяющую два отсортированных по возрастанию массива в новый отсортированный массив без использования sort, spread, concat и аналогичных методов объединения.

Сравнивайте текущие элементы двух массивов двумя указателями и записывайте меньший в результат. Время O(n + m), память O(n + m).

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

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

Сравнивайте текущие элементы двух массивов двумя указателями и записывайте меньший в результат. Время O(n + m), память O(n + m).

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

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

Сравнивайте текущие элементы двух массивов двумя указателями и записывайте меньший в результат. Время O(n + m), память O(n + m).

Для массивов чисел без NaN, уже отсортированных по возрастанию:

function mergeSorted(a, b) {
  const result = [];
  let i = 0, j = 0, k = 0;
  while (i < a.length && j < b.length) {
    result[k++] = a[i] <= b[j] ? a[i++] : b[j++];
  }
  while (i < a.length) result[k++] = a[i++];
  while (j < b.length) result[k++] = b[j++];
  return result;
}

Исходные массивы не изменяются, повторы сохраняются. Пустые массивы обрабатываются теми же циклами, запрещённые методы объединения не используются.

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

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

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

Подробнее