Leetcode23. 合併K個排序鏈表-python

難度:困難

合併 k 個排序鏈表,返回合併後的排序鏈表。請分析和描述算法的複雜度。

示例:

輸入:
[
  1->4->5,
  1->3->4,
  2->6
]
輸出: 1->1->2->3->4->4->5->6

思路:我也沒啥好思路...也算是暴力破解,首先遍歷一次所有元素,然後放到數組裏排序,然後再重新生成字符串,時間複雜度和時間複雜度都是O(X)、O(X),X爲總元素個數。雖然說暴力破解法...但是時間和空間上還打敗了百分60的人...

代碼如下:

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def mergeKLists(self, lists):
        """
        :type lists: List[ListNode]
        :rtype: ListNode
        """
        list2=[]
        #鏈表轉數組
        for i in range(len(lists)):
            while(lists[i]):
                list2.append(lists[i].val)
                lists[i]=lists[i].next
        list2.sort()
        #第一個結點是頭結點,不包含有效數字
        list3=ListNode(-1)
        #存儲頭結點
        head=list3
        for i in list2: 
            list3.next = ListNode(i)
            list3 = list3.next
        return head.next

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章