欢乐力扣:汇总区间
文章目录
- 1、题目描述
- 2、思路
- 代码
1、题目描述
汇总区间。
给定一个无重复元素 的 有序 整数数组 nums 。返回恰好覆盖数组中所有数字的最小有序区间范围列表 。也就是说nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属 nums 的数字 x 。列表中的每个区间范围 [a,b] 应该按如下格式输出:
“a->b” ,如果 a != b
“a” ,如果 a == b
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