当前位置: 首页 > news >正文

dfs(十二)21. 合并两个有序链表 递归解决

 21. 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

提示:

  • 两个链表的节点数目范围是 [0, 50]
  • -100 <= Node.val <= 100
  • l1l2 均按 非递减顺序 排列

/**
 * 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* dfs(ListNode* list1, ListNode* list2) {
        if(list1 == nullptr)
            return list2;
        if(list2 == nullptr) 某个指针递归到空位置,直接返回另外一个
            return list1;
        if(list1->val <= list2->val)    选择一个值小的作为头
        {     
            相信dfs(list1->next, list2);函数可以返回下一个合适大小的值   
            list1->next = dfs(list1->next, list2);
            return list1;
        }
        else
        {
            list2->next = dfs(list1, list2->next);
            return list2;
        }
    }
};

相关文章:

  • Spring 框架中常用注解和使用方法
  • 如何管理需求变更
  • 做游戏的发展方向
  • Skyeye 云智能制造办公系统 VUE 版本 v3.15.13 发布
  • ChatGPT and Claude国内使用站点
  • CareUEyes护眼软件深度解析:为你的双眼保驾护航
  • 基于Gemini 生成 Gemini Embedding
  • 学习笔记之注册用户如何防止缓存穿透
  • 365天之第P10周:Pytorch实现车牌识别
  • OceanBase 4.3.3 AP 功能解析:物化视图
  • 嵌入式开发之STM32学习笔记day06
  • C语言:编程设计猜数游戏
  • 【Dify平台】Function Call 模式模式和ReAct模型有什么不同?
  • 大数据技术链路详解
  • 什么是数学建模?数学建模是将实际问题转化为数学问题
  • C++学习笔记(二十一)——文件读写
  • 蓝桥杯 阶乘约数
  • 使用matlab求伴随矩阵
  • 图像处理篇:图像预处理——从数据到模型的桥梁
  • SSH反向隧道
  • 国铁集团郑州局预计“五一”发送642.5万人
  • 智能终端出海服务创新联合体成立
  • 坚持科技创新引领,赢得未来发展新优势
  • 解放日报:上海深化改革开放,系统集成创新局
  • 中国人民解放军南部战区位南海海域进行例行巡航
  • 辽宁省委书记郝鹏、省长王新伟赶到辽阳火灾事故现场指导善后处置工作