Ctrl K

Слияние равных соседей

Лёгкая
В ряду лежат плитки с неотрицательными числами — массив tiles длины n. Пройдите по ряду слева направо ровно один раз: для каждого i от 0 до n - 2 по очереди, если tiles[i] == tiles[i + 1], удвойте tiles[i] и запишите в tiles[i + 1] ноль. Иначе ничего не делайте. Каждая проверка видит результат предыдущих. После прохода сдвиньте все нули в конец ряда, сохранив порядок ненулевых плиток. Верните получившийся ряд.
Пример 1
tiles=[3, 3, 3, 5, 0, 5] → [6, 3, 5, 5, 0, 0]

i = 0: 3 и 3 равны → [6, 0, 3, 5, 0, 5]. i = 1: 0 и 3 разные. i = 2, 3: пропуск. i = 4: 0 и 5 разные. Сдвигаем нули в конец: [6, 3, 5, 5, 0, 0]. Две пятёрки не слились — между ними на момент проверки стоял ноль.

Пример 2
tiles=[2, 2, 2, 2] → [4, 4, 0, 0]

i = 0: [4, 0, 2, 2]. i = 1: 0 ≠ 2. i = 2: [4, 0, 4, 0]. После сдвига: [4, 4, 0, 0]. Получившиеся четвёрки повторно не сливаются.

Пример 3
tiles=[0, 0, 7] → [7, 0, 0]
Ограничения
  • 2 ≤ len(tiles) ≤ 2000
  • 0 ≤ tiles[i] ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЗеркало и негатив ЛёгкаяСклеить края ЛёгкаяТри в ряд до упора СредняяДва садовника и доливки СредняяРасставить пробелы по меткам Средняя
загружаем Python…
Вход
tiles=[3, 3, 3, 5, 0, 5]
Ожидается
[6, 3, 5, 5, 0, 0]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 126 тестов на сервере, включая скрытые.