32 lines
567 B
Go
32 lines
567 B
Go
package q228
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
)
|
|
|
|
func addToRanges(output []string, a, b int) []string {
|
|
if a == b {
|
|
return append(output, strconv.FormatInt(int64(a), 10))
|
|
}
|
|
return append(output, fmt.Sprintf("%d->%d", a, b))
|
|
}
|
|
|
|
func summaryRanges(nums []int) []string {
|
|
if len(nums) == 0 {
|
|
return nil
|
|
}
|
|
|
|
output := []string{}
|
|
l := 0
|
|
for r := 1; r < len(nums); r++ {
|
|
if nums[r]-nums[r-1] != 1 {
|
|
output = addToRanges(output, nums[l], nums[r-1])
|
|
l = r
|
|
}
|
|
}
|
|
output = addToRanges(output, nums[l], nums[len(nums)-1])
|
|
return output
|
|
}
|
|
|
|
var _ = summaryRanges
|