228. 汇总区间

64 阅读1分钟

题目:
给定一个  无重复元素 的 有序 整数数组 nums 。

返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。

列表中的每个区间范围 [a,b] 应该按如下格式输出:

"a->b" ,如果 a != b

来源:力扣(LeetCode) 链接:leetcode.cn/problems/su… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
算法:

import "fmt"

func summaryRanges(nums []int) []string {

    if len(nums) == 0 {

        return nil

    }

    ans := make([]string, 0)

    start, end := nums[0], nums[0]

    for i := 1; i < len(nums); i ++ {

        if nums[i] == end + 1 {

            end = nums[i]

        } else {

            if start == end {

                ans = append(ans, fmt.Sprintf("%d", start))

            } else {

                ans = append(ans, fmt.Sprintf("%d->%d", start, end))

            }

            start = nums[i]

            end = nums[i]

        }

    }

    if start == end {

        ans = append(ans, fmt.Sprintf("%d", start))

    } else {

        ans = append(ans, fmt.Sprintf("%d->%d", start, end))

    }

    return ans

}

\