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]
            
                
            
相關文章
相關標籤/搜索