LeetCode刷题---合并两个有序链表

news2024/12/26 22:15:12

个人主页:元清加油_【C++】,【C语言】,【数据结构与算法】-CSDN博客

个人专栏:http://t.csdnimg.cn/ZxuNL

                 http://t.csdnimg.cn/c9twt


前言:这个专栏主要讲述递归递归、搜索与回溯算法,所以下面题目主要也是这些算法做的  

我讲述题目会把讲解部分分为3个部分:
1、题目解析

2、算法原理思路讲解

3、代码实现


一、合并两个有序链表 

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题目:

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

示例 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
  • l1 和 l2 均按 非递减顺序 排列

二、解法 

题目解析

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

说明我们不能直接去新建一个链表,我们只能直接改变旧链表的指向来合并成一个新的链表 



算法原理思路讲解 

注意:我们在做递归这一类题目是要将递归看作一个黑盒,我们不管他是如何实现的,我们就相信他一定可以帮助我们完成目标

如何去写一个递归

1、先找到相同的子问题                                   函数头的设计

2、只关心某一个子问题是如何解决的             函数体的书写

3、注意一下递归函数的出口                            终止条件   

我们可以设计一个函数头:
交给你两个链表的头结点,你帮我把它们合并起来,并且返回合并后的头结点。
ListNode* dfs(ListNode* l1, ListNode* l2)

函数体:
选择两个头结点中较⼩的结点作为最终合并后的头结点,然后将剩下的链表交给递归函数去处理。
1、比较两个链表的头结点值的大小(如果l1小
2、l1->next = dfs(l1->next,l2);
3、返回合并后的头结点,也就是l1
if (l1->val <= l2->val)
{
    l1->next = dfs(l1->next,l2);
    return l1;
}

若是l2小亦然

递归出⼝:
当某⼀个链表为空的时候,返回另外⼀个链表。
以上思路就讲解完了,大家可以先自己先做一下
大家注意:链表的题⼀定要画图,搞清楚指针的操作!

代码实现:

class Solution 
{
public:
    ListNode* dfs(ListNode* l1, ListNode* l2)
    {
        if ( l1 == nullptr) return l2;
        if ( l2 == nullptr) return l1;

        if (l1->val <= l2->val)
        {
            l1->next = dfs(l1->next,l2);
            return l1;
        }
        else
        {
            l2->next = dfs(l1,l2->next);
            return l2;
        }
    }

    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) 
    {
        return dfs(list1,list2);
        
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1277538.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AIGC】接着昨天的AI“洗图”骚操作,继续调戏国产大模型

目录 一、洗稿&#xff0c;洗图&#xff0c;洗视频 二、如何洗图 2.1 先看看效果 2.2 如何做的 2.3 提示词示例 三、试试星火和通义 2.1 星火和通义的特点 2.2 星火的做图能力理解力强&#xff0c;准确度还有待提高 2.3 通义大模型伺候 2.4 这3个大模型可以配合使用 …

【LeetCode】链式二叉树OJ题---C语言版

链式二叉树OJ题 一、单值二叉树&#xff08;1&#xff09;题目描述&#xff1a;&#xff08;2&#xff09;思路表述&#xff1a;&#xff08;3&#xff09;代码实现&#xff1a; 二、二叉树最大深度&#xff08;1&#xff09;题目描述&#xff1a;&#xff08;2&#xff09;思路…

Unity--互动组件(Input Field)||Unity--互动组件(Scroll View)

Unity--互动组件&#xff08;Input Field&#xff09; 一个输入字段是一种方法&#xff0c;使文本控件可编辑&#xff1b; 此组件中的&#xff0c;交互&#xff0c;过渡&#xff0c;导航与文章&#xff08;Unity--互动组件&#xff08;Button&#xff09;&#xff09;中的介绍…

网络基础:网络通信基础

目录 1.网络通信基本单位 2.网络通信基础 3.调制技术 4.解调技术 5.载波调制 6.编码技术 6.1基本编码 6.2应用型编码 1.曼彻斯特编码 2.差分曼彻斯特编码 3.MLT-3编码 4.mB/nB编码 1.网络通信基本单位 Byte&#xff08;字节&#xff09;是用于计量存储容量的一种…

YOLOv8如何输出COCO指标

1、先正常python train 一个模型 yolo taskdetect modetrain model/home//v8/v8-ori-x/yolov8x.pt data/home/v8/v8-ori-x/ultralytics/cfg/datasets/111.yaml epochs300 batch16 device62、再正常python val --各种参数 --save_jsonTrue&#xff0c;这一步的作用是要生成自己…

Tmux奇技淫巧

Tmux奇技淫巧 在日常的开发工作中&#xff0c;终端是我们最常用的工具之一。在终端中我们可以调用各种解释器&#xff0c;来执行命令&#xff0c;完成我们的工作。然而&#xff0c;对于只使用终端的默认功能的开发者来说&#xff0c;他们可能会错过一些强大的工具和技巧&#…

数据库设计实践:粒度的理解与应用示例

粒度是描述数据存储和表示的详细程度。在数据库设计中&#xff0c;理解和正确选择粒度是非常重要的&#xff0c;因为它直接影响到数据的存储效率、查询性能和数据分析的灵活性。 文章目录 粒度的类型&#xff1a;案例粒度选择的考虑因素实际应用 粒度的类型&#xff1a; 细粒度…

点击dom,出现黑色边框:focus-visible

正常情况 点击地图之后&#xff08;出现黑色边框&#xff09; 解决 添加这个css

详解原生Spring框架下的方法切入点表达式

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

网页中的json文档,怎么保存到本地

火狐浏览器操作方法 方法一 右键——>另存页面为 方法二 点击右边的三条横线——>另存页面为 谷歌浏览器操作方法 方法一 右键——>另存为 方法二

element-plus的走马灯carousel图片轮播让图片居中显示

element-plus的走马灯carousel图片轮播怎么让图片居中显示呢&#xff1f;官网里查了一下&#xff0c;没找到。只能自己摸索一下了。盒子模型&#xff0c;要让图片居中&#xff0c;首先要确定盒子的大小&#xff0c;然后确定图片的大小&#xff0c;盒子使用居中样式&#xff0c;…

24双非硕的秋招总结

24 双非硕的秋招总结 结果&#xff1a; 运气捡漏去了腾讯 想想自己整个研究生学习过程&#xff0c;还是挺坎坷的&#xff0c;记录一下&#xff0c;也给未来的同学提供一些参考。 研一 我是研一上开始学前端的&#xff0c;应该是21年10月份左右&#xff0c;我们实验室是专门…

配置中心--Spring Cloud Config

目录 概述 环境说明 步骤 创建远端git仓库 准备配置文件 配置中心--服务端 配置中心--客户端 配置中心的高可用 配置中心--服务端 配置中心--客户端 消息总线刷新配置 配置中心--服务端 配置中心--客户端 概述 因为微服务架构有很多个服务&#xff0c;手动一个一…

C++的explicit和隐式转换

隐式转换是指在某些情况下&#xff0c;编译器会自动进行类型转换&#xff0c;将一种类型的值转换为另一种类型&#xff0c;以满足表达式的要求。这种转换是隐式进行的&#xff0c;不需要显式地调用转换函数或构造函数。 int a 5; double b a; // int 到 double 的隐式转换上…

xxl-job 分布式任务调度框架

文章目录 分布式任务调度XXL-Job 简介XXL-Job 环境搭建XXL-Job (源码说明)配置部署调度中心docker安装 Bean模式任务(方法形式)-入门案例任务详解任务详解-执行器任务详解-基础配置任务详解-调度配置任务详解-基础配置任务详解-阻塞处理策略任务详解-路由策略 路由策略路由策略…

系统地自学 Python

文章目录 如何系统地自学 Python1. 选择合适的 Python 版本2. 安装 Python 和必要的工具3. 学习 Python 的基础知识4. 学习 Python 的高级特性5. Python 的应用领域6. 保持良好的学习习惯 如何系统地自学 Python Python 是一种广泛使用的编程语言&#xff0c;它具有简洁、易读、…

公众号文章采集器,免费的公众号文章采集

优质的公众号文章如同一座宝库&#xff0c;蕴含着丰富的知识和实用的信息。众多公众号纷繁复杂&#xff0c;如何高效地收集到优质文章成为许多人的难题。我们将专心分享如何收集优质公众号文章的方法&#xff0c;为您揭示收集优质文章的独门技巧。 如何高效收集公众号优质文章 …

【java智慧工地源码】智慧工地物联网云平台,实现现场各类工况数据采集、存储、分析与应用

“智慧工地整体方案”以智慧工地物联网云平台为核心&#xff0c;基于智慧工地物联网云平台与现场多个子系统的互联&#xff0c;实现现场各类工况数据采集、存储、分析与应用。通过接入智慧工地物联网云平台的多个子系统板块&#xff0c;根据现场管理实际需求灵活组合&#xff0…

【斗罗二】暗杀霍雨浩行动,马小桃霸气回击,江楠楠首秀武魂兔兔

Hello,小伙伴们&#xff0c;我是拾荒君。 《斗罗大陆Ⅱ绝世唐门》第25集更新了&#xff01;和小伙伴们一样&#xff0c;一更新&#xff0c;拾荒君就急不可待地观看这一集。故事情节高潮迭起&#xff0c;尤其是霍雨浩与王冬面对六名杀手的惊险场景&#xff0c;真是让人心跳加速…

clip-path,css裁剪函数

https://www.cnblogs.com/dzyany/p/13985939.html clip-path - CSS&#xff1a;层叠样式表 | MDN 我们看下这个例子 polygon里有四个值分别代表这四个点相对于原图左上方的偏移量。 裁剪个五角星