给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。
示例 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 可组成一个连续的区间。
思路:
直接模拟整个过程就行……
class Solution(object):
def summaryRanges(self, nums):
"""
:type nums: List[int]
:rtype: List[str]
"""
if not nums:
return nums
start, end = nums[0], nums[0]
res = list()
for i, x in enumerate(nums):
if i == 0:
continue
if x == end + 1:#代表连续
end = x
elif x != end + 1: #中断了
temp = ""
if start == end: #本次区间只有一个数
temp += str(end)
else:
temp += str(start) + "->" + str(end)
res.append(temp)
start, end = x, x
if i == len(nums) - 1: #到最后一个数了 必须终止了
temp = ""
if start == end: #只有一个数
temp += str(end)
else:
temp += str(start) + "->" + str(end)
res.append(temp)
# print start, end
return res if len(nums) > 1 else [str(nums[0])]
下面的写于2019年8月6日15:47:37
class Solution(object):
def summaryRanges(self, nums):
"""
:type nums: List[int]
:rtype: List[str]
"""
if not nums:
return nums
start, end = nums[0], nums[0]
res = []
for i, num in enumerate(nums):
if i != 0:
if num == end + 1: #连上了
end += 1
else: # 断开了
if end - start == 0: #只有一个数
res.append(str(end))
else:
res.append(str(start) + "->" + str(end))
start, end = num, num
if end - start == 0: #处理最后一段
res.append(str(end))
else:
res.append(str(start) + "->" + str(end))
return res