Ctrl K

Свернуть номера в отрезки

Лёгкая
На складе выдают коробки с номерами, и в ведомость нужно записать их коротко. Дан строго возрастающий список различных целых чисел ids. Разбейте его на максимальные куски из чисел, идущих подряд без пропусков (каждое следующее больше предыдущего ровно на 1). Каждый кусок запишите строкой: - "a->b", если кусок начинается с a и заканчивается на b, причём a != b; - "a", если кусок состоит из одного числа. Верните строки в порядке возрастания чисел. Каждое число из ids должно попасть ровно в один кусок, и ни один кусок не должен содержать числа, которого нет в ids.
Пример 1
ids=[3, 4, 5, 6, 10, 12, 13] → ['3->6', '10', '12->13']

Номера 3–6 идут подряд и сворачиваются в "3->6", 10 стоит особняком, 12 и 13 дают "12->13".

Пример 2
ids=[-2, 0, 1] → ['-2', '0->1']

Между -2 и 0 пропущен -1, поэтому -2 — отдельный отрезок.

Пример 3
ids=[] → []

Номеров нет — нет и отрезков.

Ограничения
  • 0 ≤ len(ids) ≤ 20
  • -2³¹ ≤ ids[i] ≤ 2³¹ - 1
  • Числа в ids различны и идут по возрастанию
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПара с заданной суммой ЛёгкаяСжать повторы в отсортированном массиве ЛёгкаяВыкинуть лишнее значение ЛёгкаяМесто на отсортированной полке ЛёгкаяПрибавить единицу к числу из цифр Лёгкая
загружаем Python…
Вход
ids=[3, 4, 5, 6, 10, 12, 13]
Ожидается
['3->6', '10', '12->13']

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