Код Senior Два указателя обновлено
Слияние в первый массив
Условие
Массив a содержит m значащих элементов и запас пустых мест в конце. Влей в него b (n элементов), сохранив порядок. Верни a.
Примеры
mergeInto([1, 2, 3, 0, 0, 0], 3, [2, 5, 6], 3) // [1, 2, 2, 3, 5, 6]
mergeInto([0], 0, [1], 1) // [1]
mergeInto([1], 1, [], 0) // [1]
Как подойти
Заполнение с начала потребовало бы сдвигать хвост. С конца свободное место есть всегда, поэтому O(m+n) времени и O(1) памяти. Цикл идёт по j: когда b закончился, остаток a уже стоит правильно.
Подсказки: 2
- Заполняй с конца - там гарантированно свободно.
- Условие цикла по второму массиву: остаток первого уже на месте.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.