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) {
int n = lists.size();
if(n == ) return nullptr;
if(n == ) return lists[];
return mergeKLists(lists,,n-);
}
ListNode* mergeKLists(vector<ListNode*> &lists,int l,int r){
if(l > r) return nullptr;
if(l == r) return lists[l]; int mid = l + (r-l)/;
ListNode* left = mergeKLists(lists,l,mid);
ListNode* right = mergeKLists(lists,mid+,r); return merge(left,right);
} ListNode* merge(ListNode* l1,ListNode* l2){
ListNode* dummy = new ListNode(-);
ListNode* p = dummy;
while(l1 && l2){
if(l1->val <= l2->val){
p->next = l1;
l1 = l1->next;
p = p->next;
}else{
p->next = l2;
l2 = l2->next;
p = p->next;
}
}
if(l1) p->next = l1;
if(l2) p->next = l2;
return dummy->next; }
};