8.21 - hard - 72

352. Data Stream as Disjoint Intervals

有序的几个重要数据结构和算法:heap,stack,quicksort,mergesort

# Definition for an interval.
# class Interval(object):
#     def __init__(self, s=0, e=0):
#         self.start = s
#         self.end = e

class SummaryRanges(object):

    def __init__(self):
        self.intervals = []

    def addNum(self, val):
        heapq.heappush(self.intervals, (val, Interval(val, val)))

    def getIntervals(self):
        stack = []
        print self.intervals
        while self.intervals:
            idx, cur = heapq.heappop(self.intervals)
            if not stack:
                stack.append((idx, cur))
            else:
                _, prev = stack[-1]
                if prev.end + 1 >= cur.start:
                    prev.end = max(prev.end, cur.end)
                else:
                    stack.append((idx, cur))
        self.intervals = stack
        return list(map(lambda x: x[1], stack))
        


# Your SummaryRanges object will be instantiated and called as such:
# obj = SummaryRanges()
# obj.addNum(val)
# param_2 = obj.getIntervals()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,506评论 19 139
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,890评论 0 33
  • 把人生比作列车,是不是够老套的? 但此刻坐在高铁上的我就这么觉得了,老套就老套呗。 毕竟,听别人说的那是别人的,自...
    鹿來阅读 351评论 0 1
  • 我并不是一个喜欢打牌的人,只是偶尔在逢年过节的时候,陪陪家人凑个人数罢了。在前一阵子阅读社群里的文章的时候。被这几...
    水晶杯007阅读 382评论 0 0
  • 企业研发为企业的持续成长起到越来越重要的作用,它是企业持续增长的潜力。新产品的研发,一般来说是用项目的方式进行的,...
    光环国际guang阅读 471评论 0 4

友情链接更多精彩内容