合併K個排序連結串列
合併 k 個排序連結串列,返回合併後的排序連結串列。請分析和描述演算法的複雜度。
示例:
輸入:[ 1->4->5, 1->3->4, 2->6 ]輸出: 1->1->2->3->4->4->5->6
# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def mergeKLists(self, lists): """ :type lists: List[ListNode] :rtype: ListNode """ #合成一個大的listlist然後排序 lists = [x for x in lists if x] if not lists or all([not x for x in lists]): return head = lists.pop() curr = head while curr.next: curr = curr.next while lists: tmp = lists.pop() curr.next = tmp while tmp.next: tmp = tmp.next curr = tmp if not head or not head.next: return head return self.mergeSort(head) def mergeSort(self, head): if not head.next: return head pre, slow, fast = None, head, head while fast and fast.next: prev, slow, fast = slow, slow.next, fast.next.next prev.next = None left = self.mergeSort(head) right = self.mergeSort(slow) return self.merge(left, right) def merge(self, left, right): if not left: return right if not right: return left if left.val < right.val: res = left res.next = self.merge(left.next, right) else: res = right res.next = self.merge(left, right.next) return res
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31551893/viewspace-2644529/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- leetcode23. 合併K個排序連結串列LeetCode排序
- LeetCode 23. 合併K個排序連結串列LeetCode排序
- 淺談歸併排序:合併 K 個升序連結串列的歸併解法排序
- 演算法基礎~連結串列~排序連結串列的合併(k條)演算法排序
- leecode.23. 合併K個升序連結串列
- 23. 合併K個元素的有序連結串列
- [LeetCode] Merge k Sorted Lists 合併k個有序連結串列LeetCode
- 連結串列歸併排序排序
- JZ-016-合併兩個排序的連結串列排序
- 劍指offer面試17 合併兩個排序的連結串列面試排序
- 連結串列合併-排序-logo列印參考排序Go
- 連結串列面試題(七)---合併兩個有序連結串列面試題
- [每日一題] 第十八題:合併兩個排序的連結串列每日一題排序
- 演算法:排序連結串列:歸併排序演算法排序
- 牛客網高頻演算法題系列-BM5-合併k個已排序的連結串列演算法排序
- 劍指 Offer 25. 合併兩個排序的連結串列 JavaScript實現排序JavaScript
- leetcode:21. 合併兩個有序連結串列(連結串列,簡單)LeetCode
- 反轉連結串列、合併連結串列、樹的子結構
- [C++]歸併排序(連結串列描述)C++排序
- 有a,b兩個已按學號升序排序的連結串列,每個連結串列中的結點包括學號、成績。要求把兩個連結串列合併,仍按學號升序排列。...排序
- LeetCode 之 JavaScript 解答第23題 —— 合併K個有序連結串列(Merge K Sorted Lists)LeetCodeJavaScript
- 利用遞迴實現連結串列的排序(歸併排序)遞迴排序
- (連結串列)連結串列的排序問題排序
- Golang從合併連結串列聊遞迴Golang遞迴
- 【演算法-java實現】合併兩個有序連結串列演算法Java
- leetcode雙週賽(2)-合併兩個連結串列LeetCode
- 每日leetcode——21. 合併兩個有序連結串列LeetCode
- K個節點翻轉連結串列
- 求n個排序連結串列的交集排序
- 牛客網高頻演算法題系列-BM4-合併兩個排序的連結串列演算法排序
- Leetcode 21 合併兩個有序連結串列 學習感悟LeetCode
- 連結串列面試題(六)---刪除單連結串列倒數第k個結點面試題
- 連結串列-插入排序排序
- 演算法搜狗筆試題連結串列合併演算法筆試
- 【LeetCode Hot 100】21. 合併兩個有序連結串列LeetCode
- 實戰資料結構(3)_兩個單連結串列間的合併操作資料結構
- 連結串列面試題(五)---尋找連結串列的倒數第k個結點O(N)面試題
- 148. 排序連結串列排序