Дан слайс неотрицательных целых чисел без повторов в произвольном порядке.
Преобразуйте его в строку: числа идут по возрастанию через запятую, а подряд идущие
по числовому ряду числа сворачиваются в диапазон начало-конец. Одиночное число
пишется как есть. Диапазон из двух чисел тоже сворачивается (28-29).
// CompressRanges сворачивает числа в строку диапазонов.
func CompressRanges(nums []int) string
Примеры
CompressRanges([]int{21, 24, 25, 22, 23, 29, 28, 31, 20, 33}) // "20-25,28-29,31,33"
CompressRanges([]int{22, 32, 105, 20, 26}) // "20,22,26,32,105"
CompressRanges([]int{}) // ""
CompressRanges([]int{62}) // "62"
Ограничения: 0 <= len(nums) <= 10^6, 0 <= nums[i] <= 10^9. Время O(n log n).
Входной слайс не изменять: он принадлежит вызывающему.
Устно: можно ли быстрее O(n log n)? Как бы вы тестировали эту функцию?