LeetCode23.合併K個排序連結串列 python3
阿新 • • 發佈:2018-12-14
合併 k 個排序連結串列,返回合併後的排序連結串列。請分析和描述演算法的複雜度。
示例:
輸入: [ 1->4->5, 1->3->4, 2->6 ] 輸出: 1->1->2->3->4->4->5->6
挺簡單的。。連結串列不適合排序,那就從裡頭拿出來放陣列排序,排完放回去就好了。。時間複雜度就看次數最高的,while迴圈次數,根據連結串列長度,所以最好的時間複雜度是N最差是n^2
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def mergeKLists(self, lists): """ :type lists: List[ListNode] :rtype: ListNode """ num_list = [] if lists == []: return [] else: for i in lists: while i: num_list.append(i.val) i = i.next num_list.sort() head = ListNode(0) first = head for i in num_list: head.next = ListNode(i) head = head.next return first.next