题目
难度:★★☆☆☆
类型:数组
方法:分类讨论
给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。
示例
示例 1:
输入: [0,1,2,4,5,7]
输出: ["0->2","4->5","7"]
解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。
示例 2:
输入: [0,2,3,4,6,8,9]
输出: ["0","2->4","6","8->9"]
解释: 2,3,4 可组成一个连续的区间; 8,9 可组成一个连续的区间。
解答
题目很直接,但是需要考虑的情况周到,尤其是对末尾元素的处理。
遍历范围,从第二个元素开始,到最后一个元素,这里针对最后一个元素单独进行讨论。需要准备一个整型变量start来表示每一段的起始下标。
class Solution:
def summaryRanges(self, nums):
res = [] # 结果列表
start = 0 # 每一段的起始下标
for end in range(1, len(nums)+1): # 从第二个元素开始遍历到最后一个
if end == len(nums) or nums[end] != nums[end-1] + 1:
if end == start + 1: # 即这一段只含有一个元素
res.append("{}".format(nums[start])) # 将这一个元素添加进来
else: # 这一段含有多个元素
res.append("{}->{}".format(nums[start], nums[end-1])) # 添加范围
start = end # 更新当前起始端下标
return res
如有疑问或建议,欢迎评论区留言~