Leetcode刷题:228. Summary Ranges

判断连续数的范围,遍历判断,很简单:
version 1:

class Solution(object):
    def summaryRanges(self, nums):
        """
        :type nums: List[int]
        :rtype: List[str]
        """
        if len(nums) == 0:
            return nums
        if len(nums) == 1:
            return [str(nums[0])]
        start = 0
        res = []
        for i in range(1,len(nums) - 1):
            if nums[i+1] - nums[i] != 1:
                end = i
                if end - start < 1:
                    res.append(str(nums[i]))
                else:
                    res.append(str(nums[start])+'->'+str(nums[end]))
                start = i+1
        if nums[-1] - nums[-2]!=1:
            res.append(str(nums[-1]))
        else:
            res.append(str(nums[start])+'->'+str(nums[-1]))
        return res

version 2:

class Solution(object):
    def summaryRanges(self, nums):
        """
        :type nums: List[int]
        :rtype: List[str]
        """
        if len(nums) == 0:
            return nums
        if len(nums) == 1:
            return [str(nums[0])]
        start = 0
        end = 0
        res = []
        for i in range(1,len(nums)):
            if nums[i] - nums[i-1] == 1:
                end = i
            else:
                res+=[str(nums[i-1])] if end-start<1 else [str(nums[start])+
                                                         '->'+str(nums[end])]
                start = i
        res+=[str(nums[-1])] if nums[-1] - nums[-2]!=1 else [str(nums[start])+
                                                             '->'+str(nums[-1])]
        return res

猜你喜欢

转载自blog.csdn.net/a529975125/article/details/79647856