Leetcode03
生活随笔
收集整理的這篇文章主要介紹了
Leetcode03
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Merge K sorted link list
還是昨天的合并?K 個有序鏈表,今天去社區看了下,還有更簡單的解決方案,時間復雜度和空間復雜度更好,大概的思路是用python的最小堆來實現,每次從堆里彈出最小元素,然后最近一次哪個鏈表出了最小元素就把下一個塞進堆里,很高效,很簡潔,元祖(tuple)的運用是這個實現的點睛之筆,下面貼出代碼
def mergeKLists(self, lists):from heap import heappop, heapify, heapreplacedummy = node = ListNode(0)# 下面這一步很贊h = [(n.val), n] for n in lists if n]# n 轉 minheapheapify(h)while(h):# 取 堆里最小的值v, n = h[0]if n.next is None:heappop(h)else:# 彈出最小值,并把同一鏈表的下一個最小值放進堆中heapreplace(h, (n.next.val, n.next))node.next = nnode = node.nextreturn dummy.next 復制代碼Conclusion
想起了大佬 Linus 的那句話
"Bad programmers worry about the code. Good programmers worry about data structures and their relationships."
轉載于:https://juejin.im/post/5c7ba8626fb9a049f23d7b11
總結
以上是生活随笔為你收集整理的Leetcode03的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sklearn 岭回归
- 下一篇: 基于区块链交易技术开发的证券