当前位置:网站首页>Leetcode 23. 合并K个升序链表
Leetcode 23. 合并K个升序链表
2022-07-04 07:41:00 【von Libniz】
题目链接:https://leetcode.cn/problems/merge-k-sorted-lists/
题目描述
给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。
示例 1:
输入:lists = [[1,4,5],[1,3,4],[2,6]]
输出:[1,1,2,3,4,4,5,6]
解释:链表数组如下:
[
1->4->5,
1->3->4,
2->6
]
将它们合并到一个有序链表中得到。
1->1->2->3->4->4->5->6
示例 2:
输入:lists = []
输出:[]
示例 3:
输入:lists = [[]]
输出:[]
这题显然是数组k路归并的扩展,而数组k路归并存在三种解法(假设k路数组的所有元素数为n):
(1)k路数组拷贝至同一数组,再统一排序
(2)k路数组进行k次归并
(3)使用最小堆,依次从k个数组中找到最小值,重复n次
而这题把数组换成了链表,那使用第三种方法是比较合适的。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:
if not lists:
return None
k = len(lists)
dummy = ListNode(val=-1)
tail = dummy
heap = []
# put each list head to min heap
for i, node in enumerate(lists):
if node is not None:
heap.append((node.val, i, node)) # 当val相同通过link_index:i比较
heapq.heapify(heap)
# find min node n times
while len(heap) > 0:
_, idx, cur_node = heapq.heappop(heap)
tail.next = cur_node
tail = cur_node
if cur_node.next is not None:
heapq.heappush(heap, (cur_node.next.val, idx, cur_node.next))
return dummy.next
边栏推荐
- JVM -- class loading process and runtime data area
- It's healthy to drink medicinal wine like this. Are you drinking it right
- Zephyr 学习笔记1,threads
- [freertos] freertos Learning notes (7) - written freertos bidirectionnel Link LIST / source analysis
- Div hidden in IE 67 shows blank problem IE 8 is normal
- Guoguo took you to write a linked list, and the primary school students said it was good after reading it
- Used on windows Bat file startup project
- Basic DOS commands
- tornado之目录
- Set and modify the page address bar icon favicon ico
猜你喜欢
Book list | as the technical support Party of the Winter Olympics, Alibaba cloud's technology is written in these books!
MySQL中的文本处理函数整理,收藏速查
Used on windows Bat file startup project
BUUCTF(3)
Valentine's Day is coming! Without 50W bride price, my girlfriend was forcibly dragged away...
Advanced MySQL: Basics (5-8 Lectures)
Technical experts from large factories: common thinking models in architecture design
两年前美国芯片扭捏着不卖芯片,如今芯片堆积如山祈求中国帮忙
[Gurobi] 简单模型的建立
L1-027 rental (20 points)
随机推荐
The IP bound to the socket is inaddr_ The meaning of any htonl (inaddr_any) (0.0.0.0 all addresses, uncertain addresses, arbitrary addresses)
JVM中堆概念
The cloud native programming challenge ended, and Alibaba cloud launched the first white paper on application liveliness technology in the field of cloud native
博客停更声明
[Mori city] random talk on GIS data (I)
Flask 常用组件
真空介电常数和真空磁导率究竟是由什么决定的?为何会存在这两个物理量?
论文学习——基于极值点特征的时间序列相似性查询方法
window上用.bat文件启动项目
[Chongqing Guangdong education] National Open University spring 2019 770 real estate appraisal reference questions
2022-021ARTS:下半年開始
弈柯莱生物冲刺科创板:年营收3.3亿 弘晖基金与淡马锡是股东
Improve the accuracy of 3D reconstruction of complex scenes | segmentation of UAV Remote Sensing Images Based on paddleseg
Comparison between applet framework and platform compilation
【Kubernetes系列】Kubernetes 上安装 KubeSphere
Used on windows Bat file startup project
This monitoring system can monitor the turnover intention and fishing all, and the product page has 404 after the dispute appears
Docker install MySQL
Node foundation ~ node operation
Application of isnull in database query