题解 | #先分治后合并合并k个已排序的链表#

合并k个已排序的链表

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

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *merge(ListNode *p1,ListNode *p2){
        if(p1 == nullptr) return p2;
        if(p2 == nullptr) return p1;
        ListNode *head = new ListNode(0);
        ListNode *cur = head;
        while (p1!=nullptr && p2!=nullptr) {
            if(p1->val <= p2->val){
                cur->next = p1;
                p1= p1->next;
            } 
            else{
                cur->next = p2;
                p2=p2->next;
            }
            cur = cur->next;
    }
        if(p1) cur->next=p1;
        else cur->next = p2;
        return head->next;
    }
    ListNode *div(vector<ListNode *> &lists,int left,int right){
        if(left > right) return nullptr;
        else if(left == right){
            return lists[left];
        }
        int mid = (left + right) / 2;
        return merge(div(lists,left,mid),div(lists,mid+1,right));
    }
    ListNode *mergeKLists(vector<ListNode *> &lists) {
        return div(lists,0,lists.size()-1);
    }
};

全部评论

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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