Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
代码如下:
class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
if (lists.empty()) return NULL;
ListNode *front = new ListNode(INT_MAX);
ListNode *f = front;
int min = 0, count = 0;
for (int i=0;i<lists.size();++i)
{
if (lists[i]!=NULL&&lists[i]->val < f->val)
{
f->val = lists[i]->val;
min = i;
}
if (lists[i] == NULL) ++count;
}
if (count == lists.size()) return NULL;
ListNode *s = lists[min];
ListNode *r = new ListNode(0);
if (lists[min]->next != NULL)
{
r->val = lists[min]->next->val;
r->next = lists[min]->next->next;
delete s;
s = NULL;
lists[min] = r;
}
else
{
delete s;
s = NULL;
lists[min] = NULL;
++count;
}
f->next = mergeKLists(lists);
return front;
}
};