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:
ListNode* mergeKLists(vector<ListNode*>& lists)
{
ListNode* head = new ListNode(0);
ListNode* L = head;
int data[100000];
int n = lists.size();
int k = 0;
for(int i=0; i<n; i++)
{
while(lists[i] != NULL)
{
data[k++] = lists[i]->val;
lists[i] = lists[i]->next;
}
}
sort(data, data+k);
for(int i=0; i<k; i++)
{
ListNode *p = new ListNode(data[i]);
L->next = p;
L = L->next;
}
return head->next;
}
};