Summary Ranges
ID: 228; easy
Solution 1
import "strconv"
func summaryRanges(nums []int) []string {
res := make([]string, 0)
if len(nums) == 1 {
res = append(res, strconv.Itoa(nums[0]))
return res
}
inRange, start, end := false, 0, 0
for i := 0; i < len(nums); i++ {
if !inRange {
if i == len(nums)-1 {
res = append(res, strconv.Itoa(nums[i]))
break
}
if nums[i] + 1 == nums[i+1] {
inRange, start, end = true, nums[i], nums[i+1]
} else {
res = append(res, strconv.Itoa(nums[i]))
}
} else {
if i == len(nums)-1 {
res = append(res, strconv.Itoa(start) + "->" + strconv.Itoa(end))
break
}
if nums[i] + 1 == nums[i+1] {
end = nums[i+1]
} else {
res = append(res, strconv.Itoa(start) + "->" + strconv.Itoa(end))
inRange = false
}
}
}
return res
}
This code is kinda trash 😅
Solution 2
import "strconv"
func summaryRanges(nums []int) []string {
res := make([]string, 0)
for i := 0; i < len(nums); {
start := i
for i++; i < len(nums) && nums[i] == nums[i-1]+1; i++ {}
s := strconv.Itoa(nums[start])
if i-1 != start {
s += "->" + strconv.Itoa(nums[i-1])
}
res = append(res, s)
}
return res
}
Last updated