LeetCodehot100-21 合并两个有序链表

复制代码
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        if(list1==nullptr||list2==nullptr){
            return list1==nullptr?list2:list1;
        }
        ListNode* head=list1->val<=list2->val?list1:list2;
        ListNode* cur1=head->next;
        ListNode* cur2=head==list1?list2:list1;
        ListNode* tmp=head;
        while(cur1!=nullptr&&cur2!=nullptr){
            if(cur1->val<=cur2->val){
                tmp->next=cur1;
                cur1=cur1->next;
            }
            else{
                tmp->next=cur2;
                cur2=cur2->next;
            }
            tmp=tmp->next;
        }
        tmp->next=cur1==nullptr?cur2:cur1;
        return head;
    }
};

递归:

复制代码
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        if(list1==nullptr) return list2;
        if(list2==nullptr) return list1;
        if(list1->val<=list2->val){
            list1->next=mergeTwoLists(list1->next,list2);//返回的后面的有序链表中的第一个点
            return list1;
        }
        else{
            list2->next=mergeTwoLists(list1,list2->next);
            return list2;
        }
    }
};
相关推荐
人道领域3 小时前
【LeetCode刷题日记】二叉树翻转:递归与迭代全解析
java·算法·leetcode
AI科技星4 小时前
全域数学信息原本72分册(数学物理卷)
人工智能·算法·数学建模·数据挖掘·量子计算
进击的荆棘4 小时前
递归、搜索与回溯——综合(上)
c++·算法·leetcode·深度优先·dfs
平凡但不平庸的码农11 小时前
Go Slice 详解
算法·golang
Jasmine_llq14 小时前
《B3867 [GESP202309 三级] 小杨的储蓄》
算法·循环遍历·数组累加(模拟)·索引定位·顺序输出
啦啦啦_999914 小时前
案例之 逻辑回归_电信用户流失预测
算法·机器学习·逻辑回归
风筝在晴天搁浅15 小时前
快手/字节 CodeTop LeetCode 415.字符串相加
算法·leetcode
DragonnAi15 小时前
猫咪如厕检测与分类识别系统系列【十四】 项目结构重新整理-即将开源完整算法
算法·开源
机器视觉_Explorer15 小时前
【halcon】编程技巧:鼠标擦除
图像处理·人工智能·深度学习·算法·视觉检测
灵智实验室16 小时前
PX4状态估计技术EKF2详解(二):EKF2 误差状态动力学与协方差传播
算法·无人机·px 4