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;
    }
};
相关推荐
imperialeast2 分钟前
WinAXP音乐播放器8月4日更新
windows·算法·ui
ZhouDevin10 分钟前
算法论文/模型微调1——CNN架构做lora微调训练
人工智能·深度学习·算法·架构·cnn
禾高网络12 分钟前
开启环保新潮流:回收小程序系统功能介绍
java·大数据·小程序
deviant-ART15 分钟前
java stream 的 findFirst 及 findAny 方法遇到 null 元素时会出现 NullPointerException
java·开发语言
小月土星18 分钟前
LeetCode 21. 合并两个有序链表 超详细题解(虚拟头结点 + 逐行代码拆解)
算法
oier_Asad.Chen20 分钟前
【OI学习笔记】Floyed-Warshall算法解决传递闭包问题
c++·笔记·学习·算法·图论·最短路·传递闭包
国科安芯22 分钟前
卫星星务计算机数据管理中SEU容错机制的技术实现研究——以AS32S601存储器ECC架构为例
网络·单片机·算法·fpga开发·架构·云计算·risc-v
孙启超26 分钟前
【AI应用开发】Agent 无限 loop(反复调用同一个工具)如何规避?
人工智能·python·算法·llm·agent·loop·ai应用开发
小月土星1 小时前
LeetCode 142. 环形链表 II 超详细题解(快慢指针原理+逐行代码拆解)
算法
dok121 小时前
Johannes 《Linux内核模块与设备驱动开发:编写Linux驱动程序》 (11)kmalloc 动态内存分配和struct file中的私有数据
linux·驱动开发·算法