题目
Given a sorted integer array without duplicates, return the summary of its ranges.
For example, given [0,1,2,4,5,7]
, return ["0->2","4->5","7"].
标签:array
相似问题: (M) Missing Ranges, (H) Data Stream as Disjoint Intervals
题意
给定一个没有重复的数组,若数组中有从n到n+i是连续的,则转换为“n->n+i”的形式表示,若为间断点n则用“n”来表示。
解题思路
指定两个指针,begin和end分别指向一个连续数字的起始和结束数字。另begin和end同时指向数组头部,遍历数组,若连续则将end后移,若不连续,则判断begin和end是否相等,若不相等则是一个区间,就可以转换为“begin->end”,然后将begin和end都指向下一个数。若begin和end相等,则说明是一个间断点。用“begin”表示。
代码
class Solution(object):
def summaryRanges(self, nums):
"""
:type nums: List[int]
:rtype: List[str]
"""
re = []
if len(nums) == 0:
return re
begin = nums[0]
end = nums[0]
for i in range(1,len(nums)):
if nums[i] - 1 == nums[i - 1]:
end += 1
else:
if begin != end:
re.append(str(begin) + "->" + str(end))
else:
re.append(str(begin))
begin = nums[i]
end = nums[i]
if begin != end:
re.append(str(begin) + "->" + str(end))
else:
re.append(str(begin))
return re