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;
        }
    }
};
相关推荐
ZoeJoy818 小时前
算法筑基(二):搜索算法——从线性查找到图搜索,精准定位数据
算法·哈希算法·图搜索算法
Alicx.18 小时前
dfs由易到难
算法·蓝桥杯·宽度优先
_日拱一卒18 小时前
LeetCode:找到字符串中的所有字母异位词
算法·leetcode
云泽80819 小时前
深入 AVL 树:原理剖析、旋转算法与性能评估
数据结构·c++·算法
Wilber的技术分享20 小时前
【LeetCode高频手撕题 2】面试中常见的手撕算法题(小红书)
笔记·算法·leetcode·面试
邪神与厨二病20 小时前
Problem L. ZZUPC
c++·数学·算法·前缀和
梯度下降中21 小时前
LoRA原理精讲
人工智能·算法·机器学习
IronMurphy21 小时前
【算法三十一】46. 全排列
算法·leetcode·职场和发展
czlczl2002092521 小时前
力扣1911. 最大交替子序列和
算法·leetcode·动态规划
靴子学长1 天前
Decoder only 架构下 - KV cache 的理解
pytorch·深度学习·算法·大模型·kv