题目连接
https://leetcode.com/problems/merge-k-sorted-lists/
Merge k Sorted Lists
Description
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
struct cmp {
inline bool operator()(ListNode *&x, ListNode *&y) {
return x->val > y->val;
}
};
ListNode* mergeKLists(vector<ListNode*>& lists) {
priority_queue<ListNode*, vector<ListNode*>, cmp> q;
for (auto r : lists) {
while (r) {
q.push(r);
r = r->next;
}
}
ListNode root(0), *p = &root;
while (!q.empty()) {
p->next = q.top(); q.pop();
p = p->next;
}
p->next = NULL;
return root.next;
}
};