class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* current1=l1;
ListNode* current2=l2;
ListNode* res=new ListNode(0);
ListNode* result=res;
if(!l1) return l2;
if(!l2) return l1;
while(current1&¤t2)
{
if(current1->val<current2->val)
{
res->next=current1;
current1=current1->next;
}
else
{
res->next=current2;
current2=current2->next;
}
res=res->next;
}
if(!current1)
res->next=current2;
if(!current2)
res->next=current1;
return result->next;
}
ListNode* mergeKLists(vector<ListNode*>& lists) {
int size=(int)lists.size();
if(size==0)
return NULL;
if(size==1)
return lists[0];
vector<ListNode*> l1;
vector<ListNode*> l2;
for(int i=0;i<=size/2-1;i++)
l1.push_back(lists[i]);
for(int i=size/2;i<=size-1;i++)
l2.push_back(lists[i]);
ListNode* res1=mergeKLists(l1);
ListNode* res2=mergeKLists(l2);
return mergeTwoLists(res1, res2);
}
};