合并k个升序链表(递归)

来源:互联网 发布:公布经济数据 编辑:程序博客网 时间:2024/06/04 19:46

合并k个升序链表,并且返回合并后的升序链表。
给出3个升序链表[2->4->null,null,-1->null],返回 -1->2->4->null
Merge k Sorted Lists
复用mergeTwoLists即可,思路见Merge Two Sorted Lists单击这里跳转

/** * Definition of ListNode * class ListNode { * public: *     int val; *     ListNode *next; *     ListNode(int val) { *         this->val = val; *         this->next = NULL; *     } * } */class Solution {public:    ListNode *mergeKLists(vector<ListNode *> &lists) {        if(lists.empty())            return NULL;        ListNode *p=lists[0];        for(int i=1;i<lists.size();++i)            p=mergeTwoLists(p,lists[i]);        return p;    }    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {        if(l1==NULL)            return l2;        if(l2==NULL)            return l1;        ListNode *p=NULL;        if(l1->val<l2->val)        {            p=l1;            p->next=mergeTwoLists(l1->next,l2);        }        else        {            p=l2;            p->next=mergeTwoLists(l1,l2->next);        }        return p;    }};
0 0
原创粉丝点击