class : defsummaryRanges(self, nums: List[int]) -> List[str]: n = len(nums) ifnot n: return [] results = [] left = -1 for i in range(n-1): if nums[i] == nums[i+1] - 1: if left == -1: left = i else: if left == -1: results.append(str(nums[i])) else: results.append("%s->%s"%(str(nums[left]), str(nums[i]))) left = -1 if left == -1: results.append(str(nums[n-1])) else: results.append("%s->%s"%(str(nums[left]), str(nums[n-1]))) return results
2. 直接统计range
在遍历数组的过程中不断地更新统计中range的右界,具体实现过程如下:
1 2 3 4 5 6 7
defsummaryRanges(self, nums): ranges = [] for n in nums: ifnot ranges or n > ranges[-1][-1] + 1: ranges += [], ranges[-1][1:] = n, return ['->'.join(map(str, r)) for r in ranges]
近期评论