LeetCode23. Merge k Sorted Lists!!!!!!

来源:互联网 发布:网络嗅探器使用教程 编辑:程序博客网 时间:2024/06/03 22:43

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

istNode* mergeTwoLists(ListNode* l1, ListNode* l2) {    if(l1==NULL) return l2;    if(l2==NULL) return l1;    ListNode *l,*ltemp;    if(l1->val <= l2->val)    {        ltemp=new ListNode(l1->val);        l1=l1->next;    }    else    {        ltemp=new ListNode(l2->val);        l2=l2->next;    }    l=ltemp;    while(l1!=NULL && l2!=NULL)    {        if(l2==NULL || l1->val <= l2->val)        {            ltemp->next=new ListNode(l1->val);            ltemp=ltemp->next;            l1=l1->next;        }        else if(l1==NULL || l2->val <= l1->val)        {            ltemp->next=new ListNode(l2->val);            ltemp=ltemp->next;            l2=l2->next;        }    }    ltemp->next=(l1==NULL)?l2:l1;    ltemp=ltemp->next;    return l;}ListNode* mergeKLists(vector<ListNode*>& lists){    int size=lists.size();    if(size==0)  return NULL;    if(size==1)  return lists[0];    int i=2,j;    while(i/2<size)    {        for(j=0;j<size;j+=i)        {            ListNode *p=lists[j];            if(j+i/2<size) {                p=mergeTwoLists(p,lists[j+i/2]);                lists[j]=p;            }        }        i*=2;    }    return lists[0];}


0 0