LeetCode 228.汇总区间

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

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

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


示例 1:

输入:nums = [0,1,2,4,5,7]
输出:["0->2","4->5","7"]
解释:区间范围是:
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"
示例 2:

输入:nums = [0,2,3,4,6,8,9]
输出:["0","2->4","6","8->9"]
解释:区间范围是:
[0,0] --> "0"
[2,4] --> "2->4"
[6,6] --> "6"
[8,9] --> "8->9"


Python

class Solution:
    def summaryRanges(self, nums: List[int]) -> List[str]:
        if not nums:
            return []
        start=0
        end=0
        result_list=[]
        for i in range(len(nums)-1):
            #print(i)
            if nums[i]+1!=nums[i+1]:# 区间不满足有序
                end=i#记录下最后有序的位置
                #print(end)
                if start==end:# 如果区间只有一个,未发生移动
                    result_list.append(str(nums[start]))
                else:# 如果区间有范围,发生移动
                    result_list.append(str(nums[start])+'->'+str(nums[end]))
                start=i+1# 更新下一个start起始位置
        end=len(nums)-1#针对右侧边界进行判断
        if start==end:
            result_list.append(str(nums[start]))
        else:
            result_list.append(str(nums[start])+'->'+str(nums[end]))
        return result_list

你可能感兴趣的:(LeetCode 228.汇总区间)