leetcode 騰訊 合併K個排序鍊錶

2021-09-26 23:01:26 字數 1182 閱讀 6318

原題:

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

示例:輸入:

[1->4->5,

1->3->4,

2->6

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

**:

class listnode:

def __init__(self, x):

self.val = x

self.next = none

def mergetwolists(self, l1: listnode, l2: listnode) -> listnode:

t11 = l1

t22 =l2

while t11.next!=none:

t11 = t11.next

t11.next = listnode(-1)

while t22.next!=none:

t22 = t22.next

t22.next = listnode(-1)

t1 = l1

t2 = l2

self=listnode(0)

t3 = self

while ((t1.val !=-1)&(t2.val!=-1)):

if t1.val另外,可以實用優先佇列:

**:class solution(object):

def mergeklists(self, lists):

""":type lists: list[listnode]

:rtype: listnode

"""head = point = listnode(0)

q = priorityqueue()

for l in lists:

if l:

q.put((l.val, l))

while not q.empty():

val, node = q.get()

point.next = listnode(val)

point = point.next

node = node.next

if node:

q.put((node.val, node))

return head.next

```效果:

![在這裡插入描述](

分治實現LeetCode 23題 合併K個排序鍊錶

紀念第一道沒有看題解做出來的困難題 分治思想 歸併排序實現合併k個排序鍊錶 由於是實現一連串已經排序的鍊錶,所以第一時間想到了歸併排序 又由於是實現多個鍊錶的總排序,為了減少時間複雜度又想到了分治思想,這一題中也就是二分法 做了這麼多天的題總算有點進步 class solution 結果陣列的頭結點...

騰訊 合併K個排序鍊錶

合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。示例 輸入 1 4 5,1 3 4,2 6 輸出 1 1 2 3 4 4 5 6class solution collections.sort list for int x list return result.next 找尋出...

騰訊 合併K個排序鍊錶

合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。示例 輸入 1 4 5,1 3 4,2 6 輸出 1 1 2 3 4 4 5 6class solution collections.sort list for int x list return result.next 找尋出...