Given a sorted integer array without duplicates, return the summary of its ranges.
Example 1:
Input: [0,1,2,4,5,7] Output: ["0->2","4->5","7"] Explanation: 0,1,2 form a continuous range; 4,5 form a continuous range.Example 2:
Input: [0,2,3,4,6,8,9] Output: ["0","2->4","6","8->9"] Explanation: 2,3,4 form a continuous range; 8,9 form a continuous range.
题意:给定有序不重复数组,把连续的用箭头表示范围,不连续的就显示单个字符
1 my solution:two pointer
思路:一个start和一个end指向一段连续数字,遍历一遍数组
太蠢了, 我写的感觉冗余代码好多Or2.
class Solution:
def summaryRanges(self, nums):
"""
:type nums: List[int]
:rtype: List[str]
"""
ranges = []
if not nums:return []
if len(nums)==1:return [str(nums[0])]
start = 0;end = 1
while(end<len(nums)):
r = str(nums[start])
if nums[end] == nums[end-1]+1:
end += 1
else:
if end - start > 1:
r += ("->"+str(nums[end-1]))
start = end
end += 1
ranges.append(r)
if end == len(nums):
if end - start > 1:r += ("->"+str(nums[end-1]))
else:r = str(nums[end-1])
ranges.append(r)
return ranges