No23. 合并K个升序链表
题目
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
示例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 = [[]]
- 输出:[]
提示
- 3 <= nums.length <= 10^3
- -10^3 <= nums[i] <= 10^3
- -10^4 <= target <= 10^4
解题代码(Python3)
class Solution:
def mergeKLists(self, lists: List[ListNode]) -> ListNode:
#两个思路
#1:利用list sort进行排序后 再一次读入
#2:直接读入 需要一个res指针和length个指针
#链表转list
def getNum(p):
res = []
while p:
res.append(p.val)
p = p.next
return res
res = []
for x in lists:
res += getNum(x)
res.sort()
p = resP = ListNode()
for x in res:
temp = ListNode(x)
p.next = temp
p = p.next
return resP.next
思路:
利用list保存原来sort进行排序后,然后再依次存入Node,连接成链表,然后返回第一个结点。
复杂度分析:
- 时间复杂度O(nlogn) 有sort方法
- 空间复杂度O(n)