Merge K Sorted Lists

来源:互联网 发布:中国雷达 知乎 编辑:程序博客网 时间:2024/05/17 18:28

对于本题:

  要将k个链表整合到一个链表中,首先进入脑海的想法是两两Merge,然后循环进行,然后整合到

一个链表p中;具体程序如下:

//runtime:312ms/** * 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) {        int n=lists.size();        if(n==0) return nullptr;                ListNode *p=lists[0];        for(int i=1;i<n;i++)        {            p=mergeTwoLists(p,lists[i]);        }        return p;    }            ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {        ListNode temp(-1);        ListNode *p=&temp;        if(l1==nullptr) return l2;        if(l2==nullptr) return l1;        for(;l1!=nullptr&&l2!=nullptr;p=p->next)        {            if(l1->val>l2->val)             {                p->next=l2;                l2=l2->next;            }            else            {                p->next=l1;                l1=l1->next;            }        }                p->next=l1!=nullptr?l1:l2;        return temp.next;            }};


0 0
原创粉丝点击