heap的使用——合并K个排序间隔列表,和merge K个有序数组是一样的

577. 合并K个排序间隔列表

中文
English

将K个排序的间隔列表合并到一个排序的间隔列表中,你需要合并重叠的间隔。

样例

样例1

输入: [
  [(1,3),(4,7),(6,8)],
  [(1,2),(9,10)]
]
输出: [(1,3),(4,8),(9,10)]

样例2

输入: [
  [(1,2),(5,6)],
  [(3,4),(7,8)]
]
输出: [(1,2),(3,4),(5,6),(7,8)]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
"""
Definition of Interval.
class Interval(object):
    def __init__(self, start, end):
        self.start = start
        self.end = end
"""
import heapq
 
 
class Solution:
    """
    @param intervals: the given k sorted interval lists
    @return:  the new sorted interval list
    """
    def mergeKSortedIntervalLists(self, intervals):
        # write your code here
        def append(arr, l, r):
            if not arr:
                arr.append(Interval(l, r))
                return
             
            if arr[-1].start <= l <= arr[-1].end:
                arr[-1].end = max(r, arr[-1].end)
            else:
                arr.append(Interval(l, r))
         
        q = []
        for i,arr in enumerate(intervals):
            if arr:
                heapq.heappush(q, (intervals[i][0].start, intervals[i][0].end, i, 0))
         
        ans = []
        while q:
            l, r, i, j = heapq.heappop(q)
            append(ans, l, r)
             
            if j+1 < len(intervals[i]):
                heapq.heappush(q, (intervals[i][j+1].start, intervals[i][j+1].end, i, j+1))
                 
        return ans
        

 

posted @   bonelee  阅读(147)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
历史上的今天:
2019-01-22 使用深度学习检测TOR流量——本质上是在利用报文的时序信息、传输速率建模
2019-01-22 利用神经网络进行网络流量识别——特征提取的方法是(1)直接原始报文提取前24字节,24个报文组成596像素图像CNN识别;或者直接去掉header后payload的前1024字节(2)传输报文的大小分布特征;也有加入时序结合LSTM后的CNN综合模型
2018-01-22 学界| UC Berkeley提出新型分布式框架Ray:实时动态学习的开端—— AI 应用的系统需求:支持(a)异质、并行计算,(b)动态任务图,(c)高吞吐量和低延迟的调度,以及(d)透明的容错性。
2018-01-22 Amazon宣布将MXNet作为AWS的深度学习框架——貌似性能比tf高啊
2018-01-22 详解Google第二代TPU 既能推理又能训练 性能霸道
2018-01-22 Intel 的 MKL是可以用来训练的——官方的实验也提到了训练
2017-01-22 levelDB, TokuDB, BDB等kv存储引擎性能对比——wiredtree, wiredLSM,LMDB读写很强啊
点击右上角即可分享
微信分享提示