合併K個公升序鍊錶20201225

2021-10-12 21:30:26 字數 1642 閱讀 3025

2. 優化的優先佇列

3. 兩兩合併

給你乙個鍊錶陣列,每個鍊錶都已經按公升序排列。

請你將所有鍊錶合併到乙個公升序鍊錶中,返回合併後的鍊錶。

示例 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-

>4-

>4-

>5-

>

6

示例 2:

輸入:lists =

輸出:[

]

示例 3:

輸入:lists =[[

]]輸出:[

]

優先佇列的主要思路:

public listnode mergeklists

(listnode[

] lists)})

;for

(listnode nodes : lists)}

listnode pre =

newlistnode(0

);listnode cur = pre;

while

(!queue.

isempty()

) cur.next = null;

return pre.next;

}

優化後的主要思路:

public listnode mergeklists2

(listnode[

] lists)})

;for

(listnode nodes : lists)}

listnode pre =

newlistnode(0

);listnode cur = pre;

while

(!queue.

isempty()

)}cur.next = null;

return pre.next;

}

主要思路:

備註:此處也可以採用第乙個鍊錶與第二個鍊錶合併,之後與第三個鍊錶合併,之後與第四個鍊錶合併,直到最後;這種執行時間較長達到200多毫秒。

public listnode mergeklists3 (listnode[

] lists)

listnode merge

(listnode[

] lists,

int begin,

int end)

// 兩個鍊錶合併

listnode mergetwolist

(listnode l1, listnode l2)

if(l1.val <= l2.val)

else

合併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 2 3 ...

LeetCode 合併K個公升序鍊錶

原題鏈結 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 將它們合併到...