Leetcode 228. 汇总区间(Summary Ranges)

Leetcode 228.汇总区间

1 题目描述(leetcode题目链接)

  给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。

输入: [0,1,2,4,5,7]
输出: ["0->2","4->5","7"]
解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。

输入: [0,2,3,4,6,8,9]
输出: ["0","2->4","6","8->9"]
解释: 2,3,4 可组成一个连续的区间; 8,9 可组成一个连续的区间。

2 题解

  本题是一个比较容易的题,偶尔做做这类题应该可以找一些自信心,要不然就太虐了。本题用双指针就可以,但是代码可能写的比较冗余了,不太精简的感觉。

class Solution:
    def summaryRanges(self, nums: List[int]) -> List[str]:
        if not nums:
           return [] 
        retv = []
        l = nums[0]
        for i in range(1, len(nums)):
            if nums[i] - nums[i - 1] != 1:
                if nums[i - 1] == l:
                    retv.append(str(l))
                    l = nums[i]
                else:
                    retv.append(str(l) + "->" + str(nums[i - 1]))
                    l = nums[i]
        if l == nums[-1]:
            retv.append(str(l))
        else:
            retv.append(str(l) + "->" + str(nums[-1]))
        return retv

你可能感兴趣的:(Leetcode,leetcode,算法)