合并k个有序列表-python
Python 合并
2023-09-11 14:17:11 时间
主要思路:借鉴堆、队列特点,构建新的有序结果
# merge the k sorted list # main idea: 将每个list放入队列,初始一个小顶堆,size为list个数,value为队列的首个元素,交替寻找最小值存储到新list中 import heapq from collections import deque nums = [[1,3,43], [16,29,89], [4, 33, 88, 100,1011]] # 队列化 queues = list(map(deque, nums)) heap = [] for i, q in enumerate(queues): heap.append((q.popleft(), i)) # 堆化,弹出最小值: heapq.heapify(heap) result = [] while heap: # 弹出最小元素 val, index = heapq.heappop(heap) result.append(val) # 找出弹出元素所在队列中的下一个元素,push到堆中,重复以上步骤 if queues[index]: new_num = queues[index].popleft() heapq.heappush(heap, (new_num, index)) result
参考:https://izsk.me/2019/03/02/%E5%90%88%E5%B9%B6K%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84(python)/
相关文章
- 【Python成长之路】python并发学习:多进程与多线程的用法及场景介绍
- 【Python成长之路】python 基础篇 -- 装饰器【华为云分享】
- Python操作Mysql实例代码教程在线版(查询手册)_python
- Python实现单例模式
- Python类属性的延迟计算
- python中的list和array的不同之处
- 【python cookbook】【字符串与文本】14.字符串连接及合并
- Python自动化办公:27行代码实现将多个Excel表格内容批量汇总合并到一个表格
- 【Python基础】python爬虫之异步网络爬虫ǃ
- Python:利用python代码编程实现将视频的avi格式转换为MP4格式
- Python语言学习:在python中,如何获取变量的本身字符串名字而非其值/内容及其应用(在代码中如何查找同值的所有变量名)
- Python语言学习之特殊符号讲解:百分号%/点/双点/反斜杠(转义符)/单斜杠/双斜杠/用法(如去掉中括号)之详细攻略
- 100天精通Python(数据分析篇)——第67天:Pandas数据连接、合并、加入、添加、重构函数(merge、concat、join、append、stack、unstack)
- 10 个 Python 脚本来自动化你的日常任务
- python之合并文件
- 我用python之实现人脸对比(Deepface)
- python IDLE 背景修改 IDLE (Python GUI)
- python自动化测试学习-Python测试框架之unittest和pytest
- Python Webdriver 简单测试