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;
    }
};
相关推荐
C++、Java和Python的菜鸟几秒前
第3章 后端Web基础 (Maven)
java
小小编程路2 分钟前
Java super 关键字详解:用法、场景与常见误区
java·开发语言
我登哥MVP11 分钟前
走进 Gang of Four 设计模式:外观模式
java·设计模式·外观模式
HZZD_HZZD14 分钟前
碳核查场景下能源计量数据精准采集与碳排放核算算法全链路实战:从智能电表协议适配到排放因子动态计算
算法·能源
tiancaijiben29 分钟前
阿里云SAE应用引擎弹性扩缩容完全指南:从手动调控到智能自动化
java·网络·数据库
饼干哥哥34 分钟前
10.5% 深层转化、90%+ 新用户,ChatGPT Ads 值得吗?
算法·正则表达式·编程语言
增量星球34 分钟前
《持续交付2.0系列一》从技术交付到业务引领
java·docker·容器·devops
ch.ju35 分钟前
Java Programming Chapter 4——Anonymous inner class
java·开发语言
Irissgwe40 分钟前
算法之二分查找
数据结构·c++·算法·二分查找
Mr__Miss44 分钟前
Java 随机数生成器选型指南:Random、ThreadLocalRandom 与 SecureRandom
java·开发语言·python