LeetCode #228. Summary Ranges

题目

228. Summary Ranges


解题方法

设置一个变量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
上一篇:Python中如何将json文件转换成argparse


下一篇:Tensorflow 1.x学习记录(三):tensorborad的初级应用