class Solution {
public:
struct cmp
{
bool operator()(ListNode* a,ListNode* b)
{
return a->val>b->val;
}
};//struct后面要加分号
ListNode* mergeKLists(vector<ListNode*>& lists) {
priority_queue<ListNode*,vector<ListNode*>,cmp> temp;
for(auto i:lists)
{
if(i)
temp.push(i);
}
if(temp.empty())
return nullptr;
ListNode* res=temp.top();
ListNode* tail=res;
temp.pop();
if(tail->next)
temp.push(tail->next);//要先把这次push提出来写,不可加进循环中,以免temp只剩一个元素时先pop然后发生错误
while(!temp.empty())
{
tail->next=temp.top();
tail=tail->next;
temp.pop();
if(tail->next)
temp.push(tail->next);
}
return res;
}
};
public:
struct cmp
{
bool operator()(ListNode* a,ListNode* b)
{
return a->val>b->val;
}
};//struct后面要加分号
ListNode* mergeKLists(vector<ListNode*>& lists) {
priority_queue<ListNode*,vector<ListNode*>,cmp> temp;
for(auto i:lists)
{
if(i)
temp.push(i);
}
if(temp.empty())
return nullptr;
ListNode* res=temp.top();
ListNode* tail=res;
temp.pop();
if(tail->next)
temp.push(tail->next);//要先把这次push提出来写,不可加进循环中,以免temp只剩一个元素时先pop然后发生错误
while(!temp.empty())
{
tail->next=temp.top();
tail=tail->next;
temp.pop();
if(tail->next)
temp.push(tail->next);
}
return res;
}
};