動機
這題為什麼是hard?
Problem
You are given an array of k
linked-lists lists
, each linked-list is sorted in ascending order.
Merge all the linked-lists into one sorted linked-list and return it.
Example 1:
Input: lists = [[1,4,5],[1,3,4],[2,6]]Output: [1,1,2,3,4,4,5,6]Explanation: The linked-lists are:[ 1->4->5, 1->3->4, 2->6]merging them into one sorted list:1->1->2->3->4->4->5->6
Example 2:
Input: lists = []Output: []
Example 3:
Input: lists = [[]]Output: []
Constraints:
k == lists.length
0 <= k <= 10^4
0 <= lists[i].length <= 500
-10^4 <= lists[i][j] <= 10^4
lists[i]
is sorted in ascending order.- The sum of
lists[i].length
won't exceed10^4
.
Sol
直接硬幹就好,如果不計較速度的話
class Solution:
def mergeKLists(self, lists: List[ListNode]) -> ListNode:
lists = [x for x in lists if x]
ret = cur = ListNode()
while lists:
tmp = min(enumerate(lists), key=lambda x: x[1].val)
cur.next = tmp[1]
cur = cur.next
if lists[tmp[0]].next is None:
del lists[tmp[0]]
else:
lists[tmp[0]] = lists[tmp[0]].next
return ret.next