leetcode 23. Merge k Sorted Lists 合并k个排序链表 优先级队列
来源:互联网 发布:iphone照片拷贝到mac 编辑:程序博客网 时间:2024/05/22 01:45
1、使用优先级队列
建立一个最小堆,保存这k个链表,最小堆的排序规则是链表首元素的大小比较,较小的排在前面。建立一个新的表头,对于堆顶,依次连接,如果堆顶的链表还有下面的元素,将其放入堆中,依次进行,知道链表为空。注意链表为空的情况。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: struct compare{ bool operator()(ListNode* a,ListNode* b){ return a->val>b->val; } }; ListNode* mergeKLists(vector<ListNode*>& lists) { priority_queue<ListNode*,vector<ListNode*>,compare> q;; for(auto List:lists) { if(List) q.push(List); } if(q.empty()) return nullptr; ListNode* result=q.top(); q.pop(); ListNode* cur=result; if(cur->next) q.push(cur->next); while(!q.empty()) { ListNode* temp=q.top(); q.pop(); cur->next=temp; if(temp->next) q.push(temp->next); cur=cur->next; } return result; }};
阅读全文
0 0
- leetcode 23. Merge k Sorted Lists 合并k个排序链表 优先级队列
- leetCode 23. Merge k Sorted Lists (合并k个排序链表) 解题思路和方法
- Leetcode 23. Merge k Sorted Lists合并k个排序链表
- LeetCode 23 Merge k Sorted Lists(合并K个已排序链表)
- LeetCodet题解--23. Merge k Sorted Lists(合并K个已排序的链表)
- 合并k个有序链表 Merge k Sorted Lists
- Merge k Sorted Lists 合并k个有序链表@LeetCode
- LeetCode OJ 之 Merge k Sorted Lists(合并k个有序链表)
- 合并K个有序链表(LeetCode:Merge k Sorted Lists)
- lintcode merge-k-sorted-lists 合并k个排序链表
- 104.Merge k Sorted Lists-合并k个排序链表(中等题)
- leetcode解题之23.Merge k Sorted Lists Java版本(合并k个有序的链表)
- [leetcode] 【排序】 23. Merge k Sorted Lists
- [leetcode-排序]--23. Merge k Sorted Lists
- LeetCode 23. Merge k Sorted Lists(K路合并)
- 23. Merge k Sorted Lists 合并K个有序链表
- Merge k Sorted Lists(合并k个有序链)
- K链表合并 Merge k Sorted Lists
- 如何使用PL/SQL工具将excel中数据导入oracle库
- Java基础——正则表达式
- 网关的MTU检测
- Spring对JTA的支持
- iOS WKWebView 加载网页 点击link不会跳转的解决方案
- leetcode 23. Merge k Sorted Lists 合并k个排序链表 优先级队列
- const 与 readonly的区别
- 仿京东首页沉浸式图片以及状态栏变色
- Python数据挖掘-文本挖掘
- SCUT Training 20170913 Problem O
- 结构体指针
- shrio学习第二章
- 数据库——连接查询(子查询)
- github项目学习