合并两个有序链表,剑指offer,力扣

news2024/9/20 16:33:15

目录

力扣题目地址:

原题题目:

我们直接看题解吧:

解题方法:

审题目+事例+提示:

解题思路:

具体流程如下:

代码实现:

知识补充:


力扣题目地址:

21. 合并两个有序链表 - 力扣(LeetCode)

难度:简单

今天刷合并两个有序链表,大家有兴趣可以点上看看题目要求,试着做一下

原题题目:

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

我们直接看题解吧:

解题方法:

方法1、递归

方法2、迭代

审题目+事例+提示:

  • 两个链表的节点数目范围是 [0, 50]
  • l1 和 l2 均按 非递减顺序 排列

解题思路:

设L1,L2两个递增链表,合并成一个新的递增链表L3,

循环遍历依次比较两个链表的每一个节点,

若L1>L2,则L3的next指向L1,L1、L3下移一位,L1与L2继续比较,L2同理。

最后遍历结束,其中一个链表会剩下些节点,则直接加到L3即可

具体流程如下:

代码实现:

class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
      //虚节点的值为 0,它的值可以设置为任何的数,因为我们根本不需要使用它的值
       ListNode dum = new ListNode(0), cur = dum;//创建一个虚头结点,同时cur指向dum
        while (list1 != null && list2 != null) {  //while循环结束条件为其中一个链表指向为空
            if (list1.val < list2.val) {       //当L1<L2,cur.next指向L1
                cur.next = list1;
                list1 = list1.next;             //L1下移动一位
            } 
            else {
                cur.next = list2;
                list2 = list2.next;
            } 
            cur = cur.next;                   //cur下移动一位,比较其中一个链表下一位与另一列 
                                              //链表的当前位
        }
          //循环结束,判断L1是否指向为空,L1非空则cur.next指向L1,L2反之
        cur.next = list1 != null ? list1 : list2;
        return dum.next;
    }
}

知识补充:

为什么要让cur=dum

链表头节点dum不能乱动,所以用cur暂代dum,让cur动,直接操作dum的话,最后返回就得重找头结点了

类似于浅拷贝后的对象和原对象的修改会相互影响,这本质是因为它们用的同一片内存,相当于一个房间配两把钥匙。但如果不是修改,而是直接赋值,它们是不会相互影响的,相当于换成了新房子的钥匙。 

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

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

相关文章

git查看某个commit属于哪个分支方法(如何查看commit属于哪个分支)

有时候&#xff0c;当我们由于业务需求很多时&#xff0c;基于同一个分支新建的项目分支也会很多。 在某个时间节点&#xff0c;我们需要合并部分功能点时&#xff0c;我们会忘了这个分支是否已经合入哪个功能点&#xff0c;我们就会查看所有的commit记录&#xff0c;当我们找到…

2024-NeuDS-数据库题目集

一.判断题 1.在数据库中产生数据不一致的根本原因是冗余。T 解析&#xff1a;数据冗余是数据库中产生数据不一致的根本原因&#xff0c;因为当同一数据存储在多个位置时&#xff0c;如果其中一个位置的数据被修改&#xff0c;其他位置的数据就不一致了。因此&#xff0c;在数据…

GPIO HAL库+CubeMX

以正点原子精英版为例&#xff1a; 一.创建HAL库模块 二.GPIO输出 1.自己编写 void led_init(void) {GPIO_InitTypeDef gpio_init_struct;__HAL_RCC_GPIOB_CLK_ENABLE();gpio_init_struct.Pin GPIO_PIN_5;gpio_init_struct.Mode GPIO_MODE_OUTPUT_PP;gpio_init_struct.Spee…

linux -系统通用命令查询

有时候内网环境下&#xff0c;系统有些命令没有安装因此掌握一些通用的linux 命令也可以帮助我们解决一些问题查看 1.查看系统内核版本 uname -r2.查看系统版本 cat /etc/os-release3. 查看cpu 配置 lscpu4.查看内存信息 free [参数] 中各个数值的解释如下表 数值解释t…

玻色量子“揭秘”之可满足性问题(SAT)与QUBO建模

​ 摘要&#xff1a;布尔可满足性问题&#xff08;Boolean Satisfiability Problem&#xff0c;简称SAT问题&#xff09;是逻辑学和计算机科学中的一个问题&#xff0c;它的目的是确定是否存在一种解释&#xff0c;使给定的布尔公式成立。换句话说&#xff0c;它询问给定布尔公…

OpenCV快速入门:图像分析——图像分割和图像修复

文章目录 前言一、图像分割1.1 漫水填充法1.1.1 漫水填充法原理1.1.2 漫水填充法实现步骤1.1.3 代码实现 1.2 分水岭法1.2.1 分水岭法原理1.2.2 分水岭法实现步骤1.2.3 代码实现 1.3 GrabCut法1.3.1 GrabCut法原理1.3.2 GrabCut法实现步骤1.3.3 代码实现 1.4 Mean-Shift法1.4.1…

面试题:为什么生产环境中,建议禁用 Redis 的 keys 命令?

keys命令的用法&#xff1a; keys pattern查找符合正则匹配的key的列表。扫描对象是Redis服务中所有的key&#xff0c;想想都很慢对不对&#xff1f; 同时执行keys命令的同时&#xff0c;Redis进程将被阻塞&#xff0c;无法执行其他命令&#xff0c;假如超过了哨兵的down-aft…

Android系统预装带so的apk

文章目录 前言配置新建Android.mk核心命令首次编译Apk已生成 但是无arm文件system.img 也已经更新 第一次刷入打开APP后闪退加入so文件如下为修改后的mk 第二次刷入mm报错查看手机系统abi路径下分别生成两个环境的so官方LOCAL_MULTILIB描述so打包错误验证so位数注释v7部分 第三…

界面组件DevExpress Reporting v23.1 - Web报表设计器功能升级

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表 界面组件DevExpress Reporting v23.1已经发布一段…

图解分库分表

中大型项目中&#xff0c;一旦遇到数据量比较大&#xff0c;小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。 垂直拆分比较简单&#xff0c;也就是本来一个数据库&#xff0c;数据量大之后&#xff0c;从业务角度进行拆分多个库。如下图&#xff0c;独立的拆分出…

【PyQt】(自定义类)阴影遮罩

写了一个感觉有些用的小玩具。 用于给控件添加阴影遮罩(强调主控件的同时屏蔽其余控件的点击) 自定义阴影遮罩Mask&#xff1a; from PyQt5.QtCore import QPoint,QRect,Qt,QPoint,QSize from PyQt5.QtWidgets import QWidget,QLabel,QPushButton,QVBoxLayout from PyQt5.QtGu…

Javaweb之前后台分离开发介绍的详细解析

2.1 前后台分离开发介绍 在之前的课程中&#xff0c;我们介绍过&#xff0c;前端开发有2种方式&#xff1a;前后台混合开发和前后台分离开发。 前后台混合开发&#xff0c;顾名思义就是前台后台代码混在一起开发&#xff0c;如下图所示&#xff1a; 这种开发模式有如下缺点&a…

视频剪辑技巧:如何高效批量转码MP4视频为MOV格式

在视频剪辑的过程中&#xff0c;经常会遇到将MP4视频转码为MOV格式的情况。这不仅可以更好地编辑视频&#xff0c;还可以提升视频的播放质量和兼容性。对于大量视频文件的转码操作&#xff0c;如何高效地完成批量转码呢&#xff1f;现在一起来看看云炫AI智剪如何智能转码&#…

基于STC12C5A60S2系列1T 8051单片读写掉电保存数据IIC总线器件24C02一字节并显示在液晶显示器LCD1602上应用

基于STC12C5A60S2系列1T 8051单片读写掉电保存数据IIC总线器件24C02一字节并显示在液晶显示器LCD1602上应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍IIC通信简单…

【Java从入门到大牛】网络编程

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Java从入门到大牛 &#x1f320; 首发时间&#xff1a;2023年11月23日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f4…

【LeetCode:2304. 网格中的最小路径代价 | dijkstra(迪杰斯特拉)】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

YOLOv8改进 | CARAFE既减少参数又提高精度的上采样方法

论文地址&#xff1a;官方论文地址点击即可跳转 代码地址&#xff1a;官方代码地址点击即可跳转 一、本文介绍 本文给大家带来的CARAFE&#xff08;Content-Aware ReAssembly of FEatures&#xff09;是一种用于增强卷积神经网络特征图的上采样方法。其主要旨在改进传统的上采…

手写数字可视化_Python数据分析与可视化

手写数字可视化 手写数字流形学习 手写数字 手写数字无论是在数据可视化还是深度学习都是一个比较实用的案例。 数据在sklearn中&#xff0c;包含近2000份8 x 8的手写数字缩略图。 首先需要先下载数据&#xff0c;然后使用plt.imshow()对一些图形进行可视化&#xff1a; 打开c…

Springmvc原理解析

1. DispatcherServlet springmvc的核心控制器&#xff0c;负责截获所有的请求&#xff0c;当截获请求后委托给HandlerMapping进行请求映射的解析工作&#xff0c;目的是找到哪一个Controller的方法可以处理该请求&#xff0c;找到后再交由给HandlerAdaptor去负责调用并返回Mod…