LeetCode 23. 合併K個排序連結串列
題目描述
解題思路
堆排序
將每個連結串列中元素放在一起,構造一個元素個數為k的小頂堆,每次取出堆頂元素,構成新的連結串列。
並把該元素後面的元素加入到堆中,反覆操作直到堆為空。
使用優先佇列來實現堆,可以方便運算。
程式碼實現
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
struct cmp
{
bool operator () (ListNode *a, ListNode *b)
{
return a->val > b->val;
}
};
class Solution
{
public:
ListNode* mergeKLists(vector<ListNode*>& lists)
{
priority_queue<ListNode*, vector<ListNode*>, cmp> que;
for(int i = 0; i < lists.size(); i++)
{
if(lists[i])
que.push(lists[i]);
}
ListNode *head = NULL;
ListNode *pre = NULL;
ListNode *temp = NULL;
while(!que.empty())
{
temp = que.top();
que.pop();
if(!pre) head = temp;
else pre->next = temp;
pre = temp;
if(temp->next) que.push(temp->next);
}
return head;
}
};
相關文章
- leetcode23. 合併K個排序連結串列LeetCode排序
- 合併K個排序連結串列排序
- 23. 合併K個元素的有序連結串列
- 淺談歸併排序:合併 K 個升序連結串列的歸併解法排序
- 演算法基礎~連結串列~排序連結串列的合併(k條)演算法排序
- leetcode:21. 合併兩個有序連結串列(連結串列,簡單)LeetCode
- leecode.23. 合併K個升序連結串列
- LeetCode 之 JavaScript 解答第23題 —— 合併K個有序連結串列(Merge K Sorted Lists)LeetCodeJavaScript
- JZ-016-合併兩個排序的連結串列排序
- 每日leetcode——21. 合併兩個有序連結串列LeetCode
- leetcode雙週賽(2)-合併兩個連結串列LeetCode
- 連結串列合併-排序-logo列印參考排序Go
- Leetcode 21 合併兩個有序連結串列 學習感悟LeetCode
- 【LeetCode Hot 100】21. 合併兩個有序連結串列LeetCode
- 合併兩個有序連結串列
- Fourth. LeetCode 21:MergeTwo Sorted Lists 合併兩個有序連結串列LeetCode
- [leetcode 25]. K 個一組翻轉連結串列LeetCode
- [每日一題] 第十八題:合併兩個排序的連結串列每日一題排序
- 演算法:排序連結串列:歸併排序演算法排序
- 牛客網高頻演算法題系列-BM5-合併k個已排序的連結串列演算法排序
- 劍指 Offer 25. 合併兩個排序的連結串列 JavaScript實現排序JavaScript
- LeetCode 25. k個一組翻轉連結串列LeetCode
- [C++]歸併排序(連結串列描述)C++排序
- 反轉連結串列、合併連結串列、樹的子結構
- 遞迴:21. 合併兩個有序連結串列遞迴
- 利用遞迴實現連結串列的排序(歸併排序)遞迴排序
- LeetCode刷題記125-148. 排序連結串列LeetCode排序
- 將兩個升序連結串列合併為一個新的 升序 連結串列並返回。(新手篇06)
- 【LeetCode】->連結串列->通向連結串列自由之路LeetCode
- Leetcode_86_分割連結串列_連結串列LeetCode
- Golang從合併連結串列聊遞迴Golang遞迴
- 【Leetcode】23. Merge k Sorted ListsLeetCode
- LeetCode-147-對連結串列進行插入排序LeetCode排序
- 連結串列倒數第k個結點
- LeetCode-Python-86. 分隔連結串列(連結串列)LeetCodePython
- 【演算法-java實現】合併兩個有序連結串列演算法Java
- LeetCode-連結串列LeetCode
- K個節點翻轉連結串列