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]

  

猜你喜欢

转载自www.cnblogs.com/techengin/p/10216231.html