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;
        }
    }
};
相关推荐
半个落月13 分钟前
从递归到快速排序:用 JavaScript 把分治思想讲明白
javascript·算法·面试
小月土星1 小时前
JavaScript 快速排序:从 pivot、双指针到分治思想
javascript·算法·面试
小月土星1 小时前
JavaScript 递归入门:从 1 到 n 求和,再到数组扁平化
javascript·算法·面试
To_OC17 小时前
LC 1 两数之和:面试第一道必考题,暴力解法直接被面试官 pass
javascript·算法·leetcode
鱼鱼不愚与21 小时前
《原来如此 | 第01期:为什么导航软件能预测红绿灯倒计时?》
算法
复杂网络1 天前
论最小 Agent 计算机的形态
算法
kisshyshy2 天前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
猿人谷2 天前
不只是 CPU 阈值:STAR 如何用 GAT + Transformer 做容器级自动扩缩容?
人工智能·算法
复杂网络2 天前
Stable Diffusion 视觉大模型微调技术深度调研
算法