欢乐力扣:汇总区间

文章目录

  • 1、题目描述
  • 2、思路
      • 代码


1、题目描述

 汇总区间。
 给定一个无重复元素 的 有序 整数数组 nums 。返回恰好覆盖数组中所有数字的最小有序区间范围列表 。也就是说nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属 nums 的数字 x 。列表中的每个区间范围 [a,b] 应该按如下格式输出:
“a->b” ,如果 a != b
“a” ,如果 a == b

欢乐力扣:汇总区间_第1张图片

2、思路

 核心思想若有一个元素比前一个元素恰好>1,则更新右边界;否则,就存储一个区间。

代码

class Solution:
    def summaryRanges(self, nums: List[int]) -> List[str]:
        ans = []
        i = 0 
        while i < len(nums):
            # 临时变量存储区间的开始边界
            start = i  
            # 若后一个数字比前一个数字==1,则移动有边界   
            while i<len(nums)-1 and nums[i+1] - nums[i] == 1:
                i += 1
            # 存储区间
            if start < i:
                ans.append(str(nums[start]) + '->' + str(nums[i]))
            # 若 start == end , 则说明当前区间仅一个数字
            else:
                ans.append(str(nums[start]))
            # 别忘了更新i
            i += 1 
        return ans 

你可能感兴趣的:(欢乐力扣,leetcode,算法,职场和发展)