码迷,mamicode.com
首页 > 其他好文 > 详细

模板 - 优先队列

时间:2017-07-15 13:49:20      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:cto   algorithm   val   div   space   merge   com   vector   while   

#include<stdio.h>
#include<algorithm>
#include<queue>
 
using namespace std;
 
struct node{
    int num;
    node(int i){
        num = i;
    }
};
 
priority_queue<node>key;
 
bool operator <(node a ,node b){
    return a.num<b.num;
}
 
 
int main(){
    key.push(node(1));
    key.push(node(4));
    printf("%d\n",key.top().num);
    key.pop();
    key.push(node(2));
    key.push(node(3));
    printf("%d\n",key.top().num);
}
 
 
 
=============================================================================
struct compare {
    bool operator()(const ListNode* l, const ListNode* r) {
        return l->val > r->val;
    }
};
ListNode *mergeKLists(vector<ListNode *> &lists) { //priority_queue
    priority_queue<ListNode *, vector<ListNode *>, compare> q;
    for(auto l : lists) {
        if(l)  q.push(l);
    }
    if(q.empty())  return NULL;

    ListNode* result = q.top();
    q.pop();
    if(result->next) q.push(result->next);
    ListNode* tail = result;           
    while(!q.empty()) {
        tail->next = q.top();
        q.pop();
        tail = tail->next;
        if(tail->next) q.push(tail->next);
    }
    return result;
}
 
 
 

模板 - 优先队列

标签:cto   algorithm   val   div   space   merge   com   vector   while   

原文地址:http://www.cnblogs.com/clover-xuqi/p/7182289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!