题目
解题方法
设置一个变量start记录当前区间的起始位置,遍历数组,如果当前已经遍历到数组结尾,或者当前数值大于前一个数值+1,则记录区间并更新start。记录区间时判断nums[i-1]和nums[start]的大小关系,分为相等和不相等两种情况处理即可。
时间复杂度:O(n)
空间复杂度:O(1)
代码
class Solution:
def summaryRanges(self, nums: List[int]) -> List[str]:
ret = []
i, start = 1, 0
while i < len(nums) + 1:
if i == len(nums) or nums[i] > nums[i-1] + 1:
if nums[i-1] == nums[start]:
ret.append(str(nums[start]))
else:
ret.append(str(nums[start]) + "->" + str(nums[i-1]))
start = i
i += 1
return ret