Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
int len_l = lists.size();
ListNode head(0);
ListNode *h = &head;
auto comp = [](ListNode* l1, ListNode* l2){
return l1->val> l2->val;
};
priority_queue<ListNode*, std::vector<ListNode*>, decltype(comp)> q(comp);
for(int i = 0; i < len_l; i++){
if(lists[i])
q.push(lists[i]);
}
while(q.empty() == false){
h->next = q.top();
q.pop();
h = h->next;
if(h->next != NULL)
q.push(h->next);
}
return head.next;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment