题解一:
class Solution:
def mergeKLists(self, lists: List[ListNode]) -> ListNode:
#思路:立即想到了两两合并,因为之前做过两两合并的题。
if not lists:return None
def mergeTwoLists(l1, l2):
#思路:递归,属实精彩。
if not l1:return l2
elif not l2:return l1
elif l1.val < l2.val:
l1.next = mergeTwoLists(l1.next, l2)
return l1
else:
l2.next = mergeTwoLists(l1, l2.next)
return l2
l1 = lists[0]
for i in range(1, len(lists)):
l2 = lists[i]
l1 = mergeTwoLists(l1, l2)
return l1
class Solution:
def mergeKLists(self, lists: List[ListNode]) -> ListNode:
#思路:这题没要求在原来的链表上操作,因此可以先取值,然后排序,最后在生成链表,有点暴力。
lists_val = []
for i in range(len(lists)):
cur = lists[i]
while cur:
lists_val.append(cur.val)
cur = cur.next
cur = ListNode(0)
head = cur
for i in sorted(lists_val):
cur.next = ListNode(i)
cur = cur.next
return head.next