LeetCode 合併K個排列鍊錶

2021-10-03 20:39:39 字數 735 閱讀 9624

題目描述:

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

首先了解一下堆排列的模組函式heapq,heapq函式簡介

答題思路:遍歷lists,將每乙個鍊錶的節點新增到堆中,之後不斷從堆中取最小值,新增到新的鍊錶中,最後返回這個列表

具體程式如下:

class

solution

(object):

defmergeklists

(self, lists)

:import heapq

que =

for node in

(lists)

:if node !=

none

: (node.val, node)

) dummy_node = listnode(-1

) cur = dummy_node

while que:

cur.

next

= node

cur = cur.

next

if node.

next

!=none

:(node.

next

.val, node.

next))

return dummy_node.

next

Leetcode 合併k個鍊錶

1 分治遞迴思想 時間複雜度nlogk,空間複雜度,執行用時 88 ms,在所有 cpp 提交中擊敗了33.27 的使用者 記憶體消耗 29.7 mb,在所有 cpp 提交中擊敗了5.09 的使用者 class solution else ptr ptr next if l1 if l2 retur...

leetcode 合併K個排序鍊錶

合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。示例 輸入 1 4 5,1 3 4,2 6 輸出 1 1 2 3 4 4 5 6 方法1 暴力法 將所有鍊錶元素放入乙個陣列中,再對陣列排序,最後返回乙個排好序的鍊錶,但是似乎時間和記憶體會超,無法通過 複雜度取決於排序占用的複...

leetcode合併K個排序鍊錶

合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。示例 輸入 1 4 5,1 3 4,2 6 輸出 1 1 2 3 4 4 5 6 直接上 class solution object defmergeklists self,lists type lists list listn...