题解 | #合并k个已排序的链表#

合并k个已排序的链表

https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
        if(pHead1==nullptr)
        return pHead2;
        if(pHead2==nullptr)
        return pHead1;
        ListNode* dummy=new ListNode(-1);
        ListNode* cur=dummy;
        ListNode* cur1=pHead1;
        ListNode* cur2=pHead2;
        while(cur1!=nullptr&&cur2!=nullptr)
        {
            if(cur1->val>=cur2->val)
            {
                cur->next=cur2;
                cur2=cur2->next;
            }
            else
            {
                cur->next=cur1;
                cur1=cur1->next;
            }
            cur=cur->next;
        }
        if(cur1==nullptr)
        {
            cur->next=cur2;
        }
        if(cur2==nullptr)
        {
            cur->next=cur1;
        }
        return dummy->next;
    }
    ListNode* divideMerge(vector<ListNode*>& lists,int l,int r)
    {
        if(l>r)
        return nullptr;
        else if(l==r)
        return lists[l];
        int m=(l+r)/2;
        return Merge(divideMerge(lists,l,m),divideMerge(lists,m+1,r));
    }
    ListNode* mergeKLists(vector<ListNode*>& lists) {
        return divideMerge(lists,0,lists.size()-1);
    }
};

归并排序

全部评论

相关推荐

找个工作&nbsp;学历是要卡的&nbsp;要求是高的&nbsp;技能不足是真的&nbsp;实习经验是0的&nbsp;简历无处可写是事实的&nbsp;钱不好赚是真的&nbsp;想躺平又不敢躺&nbsp;也不甘心躺&nbsp;怕自己的灵感和才华被掩埋甚至从未被自己发现&nbsp;又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
06-04 09:27
门头沟学院 Java
点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务