struct cmp{
bool operator() (ListNode *p,ListNode *q){
return p->val>q->val; //> 小根堆
}
};
ListNode *mergeKLists(vector<ListNode *> &lists) {
priority_queue<ListNode*,vector<ListNode*>,cmp> heap;
ListNode *dummy=new ListNode(0),*tail=dummy;
for(int i=0;i<lists.size();i++)
if(lists[i])
heap.push(lists[i]);
while(!heap.empty()){
ListNode *q=heap.top();
heap.pop();
if(q->next)
heap.push(q->next);
tail->next=q;
tail=tail->next;
}
return dummy->next;
}
bool operator() (ListNode *p,ListNode *q){
return p->val>q->val; //> 小根堆
}
};
ListNode *mergeKLists(vector<ListNode *> &lists) {
priority_queue<ListNode*,vector<ListNode*>,cmp> heap;
ListNode *dummy=new ListNode(0),*tail=dummy;
for(int i=0;i<lists.size();i++)
if(lists[i])
heap.push(lists[i]);
while(!heap.empty()){
ListNode *q=heap.top();
heap.pop();
if(q->next)
heap.push(q->next);
tail->next=q;
tail=tail->next;
}
return dummy->next;
}