228. 汇总区间(leetcode)

#总体思路:使用堆栈,在Python中能够使用列表代替;若是a[i]-a[i-1]==1,就要将a[i]合并到以前的区间里,#因此咱们队首位元素开辟一个区间为[a[0],a[0]]#作最后汇总时候,若是区间内先后元素相等,就直接str(),若是不相等就用->分割;class Solution:
    def summaryRanges(self, nums):
        """
        :type nums: List[int]
        :rtype: List[str]
        """
        if len(nums)==0:return []
        if len(nums)==1:return [str(nums[0])]
        result=[[nums[0],nums[0]]]  #使用一个列表代替堆栈
        for i in range(1,len(nums)):
            pre=result.pop()
            if nums[i]-pre[1]==1:
                result.append([pre[0],nums[i]])
            else:
                result.append(pre)
                result.append([nums[i],nums[i]])
        return ['%s->%s'%(i[0],i[1]) if i[0]!=i[1] else str(i[0]) for i in result]
            
                
            
相关文章
相关标签/搜索