leecode.23. 合併K個升序連結串列
題目
給你一個連結串列陣列,每個連結串列都已經按升序排列。
請你將所有連結串列合併到一個升序連結串列中,返回合併後的連結串列。
示例一
輸入: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
思路分析
- 使用優先佇列模擬小頂堆,每次取隊頭元素,作為最小的元素。
程式碼
class Solution {
public:
struct cmp{
bool operator()(ListNode * const &a, ListNode * const &b){//按照降序排列
return a->val > b->val;
}
};
ListNode* mergeKLists(vector<ListNode*>& lists) {
int n = lists.size();
ListNode head = ListNode(0);
priority_queue<ListNode *, vector<ListNode *>, cmp> q;
for(auto p : lists) if(p != NULL) q.push(p);
ListNode * p = &head;
while(!q.empty()){
p->next = q.top();
q.pop();
p = p->next;
if(p->next) q.push(p->next);
}
return head.next;
}
};
相關文章
- 淺談歸併排序:合併 K 個升序連結串列的歸併解法排序
- 合併K個排序連結串列排序
- 23. 合併K個元素的有序連結串列
- 有a,b兩個已按學號升序排序的連結串列,每個連結串列中的結點包括學號、成績。要求把兩個連結串列合併,仍按學號升序排列。...排序
- leetcode23. 合併K個排序連結串列LeetCode排序
- LeetCode 23. 合併K個排序連結串列LeetCode排序
- [LeetCode] Merge k Sorted Lists 合併k個有序連結串列LeetCode
- 演算法基礎~連結串列~排序連結串列的合併(k條)演算法排序
- 連結串列面試題(七)---合併兩個有序連結串列面試題
- leetcode:21. 合併兩個有序連結串列(連結串列,簡單)LeetCode
- 反轉連結串列、合併連結串列、樹的子結構
- LeetCode 之 JavaScript 解答第23題 —— 合併K個有序連結串列(Merge K Sorted Lists)LeetCodeJavaScript
- Golang從合併連結串列聊遞迴Golang遞迴
- 【演算法-java實現】合併兩個有序連結串列演算法Java
- leetcode雙週賽(2)-合併兩個連結串列LeetCode
- JZ-016-合併兩個排序的連結串列排序
- 每日leetcode——21. 合併兩個有序連結串列LeetCode
- 劍指offer面試17 合併兩個排序的連結串列面試排序
- K個節點翻轉連結串列
- 連結串列合併-排序-logo列印參考排序Go
- Leetcode 21 合併兩個有序連結串列 學習感悟LeetCode
- 連結串列面試題(六)---刪除單連結串列倒數第k個結點面試題
- 牛客網高頻演算法題系列-BM5-合併k個已排序的連結串列演算法排序
- 演算法搜狗筆試題連結串列合併演算法筆試
- [每日一題] 第十八題:合併兩個排序的連結串列每日一題排序
- 【LeetCode Hot 100】21. 合併兩個有序連結串列LeetCode
- 實戰資料結構(3)_兩個單連結串列間的合併操作資料結構
- 連結串列歸併排序排序
- 連結串列面試題(五)---尋找連結串列的倒數第k個結點O(N)面試題
- 02-線性結構1 兩個有序連結串列序列的合併 (15分)
- 劍指 Offer 25. 合併兩個排序的連結串列 JavaScript實現排序JavaScript
- 網路程式設計定時器一:使用升序連結串列程式設計定時器
- 讓我們一起啃演算法----合併兩個有序連結串列演算法
- Fourth. LeetCode 21:MergeTwo Sorted Lists 合併兩個有序連結串列LeetCode
- 資料結構實驗之連結串列四:有序連結串列的歸併資料結構
- [leetcode 25]. K 個一組翻轉連結串列LeetCode
- 測試開發每日演算法 Leecode21. 合併兩個有序連結串列演算法
- [C++]歸併排序(連結串列描述)C++排序