Leetcode Hot100 第58题 23.合并K个升序链表

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        ListNode* dummy = new ListNode(-1);
        ListNode* cur = dummy;
        while(list1&&list2){
            if(list1->val<list2->val){
                cur->next = list1;
                list1=list1->next;
            }else{
                cur->next = list2;
                list2=list2->next;
            }
            cur=cur->next;
        }
        if(list1) cur->next=list1;
        if(list2) cur->next=list2;
        return dummy->next;
    }
};
cpp 复制代码
class Solution {
public:
    ListNode* mergeKLists(vector<ListNode*>& lists) {
        return traverse(lists,0,lists.size()-1);
    }
    ListNode* traverse(vector<ListNode*>& lists,int l, int r){
        if(l>r) return nullptr;
        if(l==r) return lists[l];
        ListNode* left = traverse(lists, l, l+(r-l)/2);
        ListNode* right = traverse(lists, l+(r-l)/2 + 1, r);
        return mergeTwoLists(left,right);
    }
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        ListNode* dummy = new ListNode(-1);
        ListNode* cur = dummy;
        while(list1&&list2){
            if(list1->val<list2->val){
                cur->next = list1;
                list1=list1->next;
            }else{
                cur->next = list2;
                list2=list2->next;
            }
            cur=cur->next;
        }
        if(list1) cur->next=list1;
        if(list2) cur->next=list2;
        return dummy->next;
    }
};
相关推荐
2301_803554525 小时前
正向代理,反向代理,负载均衡还有nginx
java·nginx·负载均衡
要开心吖ZSH5 小时前
软件设计师备考-(十六)数据结构及算法应用(重要)
java·数据结构·算法·软考·软件设计师
向上的车轮5 小时前
基于Java Spring Boot的云原生TodoList Demo 项目,验证云原生核心特性
java·spring boot·云原生
程序员清风5 小时前
快手一面:为什么要求用Static来修饰ThreadLocal变量?
java·后端·面试
逍遥德5 小时前
Java8 Comparator接口 和 List Steam 排序使用案例
java·spring boot·list·排序算法
带娃的IT创业者5 小时前
如何开发一个教育性质的多线程密码猜测演示器
网络·python·算法
前行的小黑炭5 小时前
Android :如何快速让布局适配手机和平板?
android·java·kotlin
_BugMan7 小时前
【IDEA】干活?一个IDEA即可,集成开发平台打造攻略
java·ide·intellij-idea
Aczone287 小时前
硬件(六)arm指令
开发语言·汇编·arm开发·嵌入式硬件·算法
YA3337 小时前
java设计模式二、工厂
java·开发语言·设计模式