题目描述
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"].
分析
因为数组里元素是有序的,所有用for循环从前往后依次读取,然后用if判断当前元素[i]与上一个元素[i-1]是否相差1,如果不是相差1,则形成了一个区间。程序实现时要注意边界值的处理。
代码
class Solution(object):
def summaryRanges(self, nums):
"""
:type nums: List[int]
:rtype: List[str]
"""
summary = []
if nums == None or len(nums) == 0:
return summary
N = len(nums)
if N == 1:
summary.append(str(nums[0]))
return summary
min1 = nums[0]
max1 = nums[0]
max2 = nums[0]
N = len(nums)
for i in range(N-1):
max1 = nums[i]
max2 = nums[i+1]
if i == N-2:
if max2 - max1 >1 :
if min1 < max1:
s = str(min1) + '->' + str(max1)
else:
s = str(min1)
summary.append(s)
summary.append(str(max2))
else:
s = str(min1) + '->' + str(max2)
summary.append(s)
else:
if max2 - max1 >1 :
if min1 < max1:
s = str(min1) + '->' + str(max1)
else:
s = str(min1)
summary.append(s)
min1 = max2
return summary