Ctrl K

Суммы между нулями

Средняя
Дан односвязный список head из неотрицательных целых чисел. Список начинается и заканчивается нулём, а нули делят его на блоки: между любыми двумя соседними нулями стоит хотя бы одно ненулевое число. Замените каждый блок одним узлом со значением, равным сумме чисел блока, а сами нули уберите. Верните голову нового списка — суммы блоков в том же порядке.
Пример 1
head=list_node([0, 2, 7, 0, 5, 0]) → [9, 5]

Между первыми двумя нулями 2 + 7 = 9, между вторым и третьим — 5. Ответ: [9, 5].

Пример 2
head=list_node([0, 4, 4, 4, 4, 0]) → [16]

Блок один, его сумма 16.

Пример 3
head=list_node([0, 1, 0, 30, 0, 6, 1, 0]) → [1, 30, 7]
Ограничения
  • В списке от 3 до 2·10⁵ узлов
  • 0 ≤ Node.val ≤ 1000
  • Первый и последний узлы равны 0
  • Двух нулей подряд нет
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРазлить список по спирали СредняяСложение чисел-списков СредняяУбрать k-й узел с конца СредняяОбмен соседей парами СредняяУмножение длинных чисел в строках Средняя
загружаем Python…
Вход
head=list_node([0, 2, 7, 0, 5, 0])
Ожидается
[9, 5]

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