合并Python中K排序列表的程序
假设我们有一些列表,这些列表已排序。我们必须将这些列表合并为一个列表。为了解决这个问题,我们将使用堆数据结构。因此,如果列表为[1,4,5],[1,3,4],[2,6],则最终列表将为[1,1,2,3,4,4,5,6]。
为了解决这个问题,我们将遵循以下步骤-
n:=列表大小
堆:=一个新列表
对于每个索引i和列表行[i],执行
将(row[0],i,0)插入堆
如果行不为空,则
res:=一个新列表
当堆不为空时,执行
将列表[行,列+1],行,列+1插入堆
num,row,col:=堆的顶部元素
在res的末尾插入num
如果col<列表的大小[行]-1,则
返回资源
让我们看下面的实现以更好地理解-
示例
import heapq
class Solution:
def solve(self, lists):
n = len(lists)
heap = []
for i, row in enumerate(lists):
if row:
heapq.heappush(heap, (row[0], i, 0))
res = []
while heap:
num, row, col = heapq.heappop(heap)
res.append(num)
if col < len(lists[row]) - 1:
heapq.heappush(heap, (lists[row][col + 1], row, col + 1))
return res
ob = Solution()lists = [[],[],[11, 13],[],[4, 4, 14],[4],[11],[1, 8]]
print(ob.solve(lists))输入项
[[],[],[11, 13],[],[4, 4, 14],[4],[11],[1, 8]]
输出结果
[1, 4, 4, 4, 8, 11, 11, 13, 14]
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短