当前位置:网站首页>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
边栏推荐
- L1-030 one gang one (15 points)
- 【Kubernetes系列】Kubernetes 上安装 KubeSphere
- PCIE知识点-010:PCIE 热插拔资料从哪获取
- Oracle stored procedures and functions
- Zephyr 学习笔记1,threads
- L1-022 odd even split (10 points)
- [Flink] temporal semantics and watermark
- 2022-021ARTS:下半年开始
- How to use MOS tube to realize the anti reverse connection circuit of power supply
- Practice (9-12 Lectures)
猜你喜欢

Summary of MySQL common judgment functions!! Have you used it

果果带你写链表,小学生看了都说好

zabbix 5.0监控客户端

Zephyr 学习笔记2,Scheduling

Introduction to sap commerce cloud B2B organization function

Guoguo took you to write a linked list, and the primary school students said it was good after reading it

University stage summary

This monitoring system can monitor the turnover intention and fishing all, and the product page has 404 after the dispute appears

Zephyr Learning note 2, Scheduling

弈柯莱生物冲刺科创板:年营收3.3亿 弘晖基金与淡马锡是股东
随机推荐
Valentine's Day is coming! Without 50W bride price, my girlfriend was forcibly dragged away...
Routing decorator of tornado project
L2-013 red alarm (C language) and relevant knowledge of parallel search
Implementation of ZABBIX agent active mode
User login function: simple but difficult
MYCAT middleware installation and use
Directory of tornado
Email alarm configuration of ZABBIX monitoring system
BUUCTF(3)
【FreeRTOS】FreeRTOS学习笔记(7)— 手写FreeRTOS双向链表/源码分析
Activiti common operation data table relationship
手写简易版flexible.js以及源码分析
The idea of implementing charts chart view in all swiftui versions (1.0-4.0) was born
rapidjson读写json文件
Heap concept in JVM
BUUCTF(4)
This monitoring system can monitor the turnover intention and fishing all, and the product page has 404 after the dispute appears
Tri des fonctions de traitement de texte dans MySQL, recherche rapide préférée
OKR vs. KPI 一次搞清楚这两大概念!
真空介电常数和真空磁导率究竟是由什么决定的?为何会存在这两个物理量?