第23題 合併K個公升序鍊錶

2021-10-22 08:34:22 字數 1242 閱讀 8052

23. 合併k個公升序鍊錶方法一:分治策略

/**

* definition for singly-linked list.

* public class listnode

* listnode(int val)

* listnode(int val, listnode next)

* }*///執行用時:2 ms,記憶體消耗:40.4 mb

class

solution

int step =1;

//間隔

while

(stepstep =

2*step;

}return lists[0]

;}//二個有序列表合併

public listnode mergetwolists

(listnode l1, listnode l2)

if(l2 == null)

listnode dummy_head =

newlistnode(0

);listnode curr_point = dummy_head;

while

(l1!=null && l2!=null)

else}if

(l1 == null)

if(l2 == null)

return dummy_head.next;

}}

方法二:優先順序佇列(小頂堆)
//執行用時:5 ms,記憶體消耗:40.3 mb

public listnode mergeklists(listnode lists)

listnode dummy_head = new listnode(0);

listnode curr_point = dummy_head;

//例項化乙個優先順序佇列,建立乙個比較器作為其形參,比較器在作用是告訴佇列排序的規則

priorityqueuequeue = new priorityqueue<>((listnode node1 , listnode node2)->);

for(listnode node : lists)

//如果小頂堆還存在節點,就把堆頂元素(即val值最小的節點)彈出,如果彈出的節點的next存在,則把其next指向的節點加入到堆中

while(!queue.isempty())

}return dummy_head.next;

}

23 合併K個公升序鍊錶

給你乙個鍊錶陣列,每個鍊錶都已經按公升序排列。請你將所有鍊錶合併到乙個公升序鍊錶中,返回合併後的鍊錶。示例 1 輸入 lists 1,4,5 1,3,4 2,6 輸出 1,1,2,3,4,4,5,6 解釋 鍊錶陣列如下 1 4 5,1 3 4,2 6 將它們合併到乙個有序鍊錶中得到。1 1 2 3 ...

23 合併K個公升序鍊錶

題目描述 給你乙個鍊錶陣列,每個鍊錶都已經按公升序排列。請你將所有鍊錶合併到乙個公升序鍊錶中,返回合併後的鍊錶。示例 1 輸入 lists 1,4,5 1,3,4 2,6 輸出 1,1,2,3,4,4,5,6 解釋 鍊錶陣列如下 1 4 5,1 3 4,2 6 將它們合併到乙個有序鍊錶中得到。1 1...

23 合併K個公升序鍊錶

給你乙個鍊錶陣列,每個鍊錶都已經按公升序排列。請你將所有鍊錶合併到乙個公升序鍊錶中,返回合併後的鍊錶。示例 1 輸入 lists 1,4,5 1,3,4 2,6 輸出 1,1,2,3,4,4,5,6 解釋 鍊錶陣列如下 1 4 5,1 3 4,2 6 將它們合併到乙個有序鍊錶中得到。1 1 2 3 ...