23.合并k个升序链表
题目描述
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
示例
输入: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
思路
取一个列表,把lists里每个链表都放进去,不断比较他们头节点的大小
算法
1.新建一个列表,把lists里每个链表头放进去,不断比较头节点大小
2.把头节点最小的链入新链表中,然后最小的这个头节点更新到next
代码
# 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[ListNode]) -> ListNode:
if lists == []:
return None
li = []
for item in lists:
if item:
li.append(item)
li.sort(key = lambda x : x.val)
head = ListNode()
now = head
while li:
now.next = li[0]
now = now.next
if li[0].next:
li[0] =li[0].next
else:
li.pop(0)
li.sort(key = lambda x : x.val)
return head.next
题目来源
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-k-sorted-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。