图解LeetCode——合并两个有序链表

如果你喜欢这篇文章的话,请给作者点赞+关注哟,你的支持是我不断前进的动力!

目录

题目描述:

解法: 

完整代码:

结果


题目链接:力扣

题目描述:

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

示例 1:

格式:

class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {

        //代码
    }
}

解法: 

第一步:

我们需要一开始设置一个虚拟节点,它的值为 -1(它的值可以设置为任何的数),我们在后序的操作中不需要关心它具体的值,设置任何值都可以,并且我们设置一个p指针指向它。

ListNode dummy = new ListNode(-1), p = dummy;

 第二步:

为了方便我们后序代码的输入,我们分别给两个链表取个别名(可以不取)。

 ListNode p1 = list1;
 ListNode p2 = list2;

第三步:

使用while循环,当我们的两个链表都不为空的时候进行遍历,在遍历的过程中不断的比较他们之间的值,让p的next指向值小的那一个。

 这个时候我们发现,链表一的值比链表二的值要小,我们将其放入到新链表中,完成后让 p1 = p1.next; p = p.next

 while(p1 != null && p2 != null){
            if(p1.val > p2.val){
                p.next = p2;
                p2 = p2.next;
            }else{
                p.next = p1;
                p1 = p1.next;
            }
            p = p.next;
        }

这个时候我们发现链表一已经为空了,但是链表二还没有为空,这个时候我们只需要将链表二后面的结点拼接到新链表上就可以啦

 

if(p1 != null){
    p.next = p1;
 }
if(p2 != null){
    p.next = p2;
 }

这个时候我们只需要返回虚拟结点的下一个结点就是我们的新链表啦 

 完整代码:

class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        ListNode dummy = new ListNode(-1), p = dummy;
        ListNode p1 = list1;
        ListNode p2 = list2;

        while(p1 != null && p2 != null){
            if(p1.val > p2.val){
                p.next = p2;
                p2 = p2.next;
            }else{
                p.next = p1;
                p1 = p1.next;
            }
            p = p.next;
        }

        if(p1 != null){
            p.next = p1;
        }
        if(p2 != null){
            p.next = p2;
        }
        return dummy.next;
    }
}

结果

如果你喜欢这篇文章的话,请给作者点赞哟,你的支持是我不断前进的动力。

因为作者能力水平有限,欢迎各位大佬指导。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2017世界互联网领先成果来了 光量子计算机

演讲者:陆朝阳中国科学技术大学教授 发布了世界上首台超越早期经典计算机的光量子计算机 陆朝阳:很高兴向大家报告中国科学院在量子计算这个领域取得的基础性的研究成果。 我们知道50多年以来摩尔定律一直见证着计算机的更新换代,之前每过18个…

【新2023Q2模拟题JAVA】华为OD机试 - 绘图机器

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:绘图机器 题目 绘图机器的绘…

读书笔记-纳瓦尔宝典-2023.04.01

重点 财富 如何构造高价值信息 判断力 何为幸福 启发 最近看了这本书的大部分内容,感悟颇多,及时记录下来。 因为是快速阅读,还未做深入思考和实践,但对总体的内容有一个大致把握,未来会结合行动反复阅读和思考&…

python画爱心代码

前几天在网上看到了一个画爱心的教程,就是在 Python里面画一个爱心,但是我在网上找到的代码不是很好用,所以我就自己写了一遍。 首先我们先创建一个新的 python文件。新建一个 python文件夹,将我们之前的那个 python文件夹复制到这…

蓝桥杯·3月份刷题集训Day03

本篇博客旨在记录自已打卡蓝桥杯3月份刷题集训,同时会有自己的思路及代码解答希望可以给小伙伴一些帮助。本人也是算法小白,水平有限,如果文章中有什么错误之处,希望小伙伴们可以在评论区指出来,共勉💪。 文…

2021年第十二届蓝桥杯省赛Java B组真题及详细题解

A试题 : ASC【填空题】 本题总分: 5 分 【1、问题描述】 已知大写字母 A 的 ASCII 码为 65,请问大写字母 L 的 ASCII 码是多少? 【2、答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数&#…

二十、Javascript API(一)

1. Atomics和SharedArrayBuffer 多个上下文访问 SharedArrayBuffer时,如果同时对缓冲区执行操作,就可能出现资源争用问题。Atomics API 通过强制同一时刻只能对缓冲区执行一个操作,可以让多个上下文安全地读写一个SharedArrayBuffer。 1.1 …

Android HTTP请求方式

1.HttpClient使用流程 基本流程: 2.HttpClient使用示例 1)使用HttpClient发送GET请求 直接贴下简单的发送Get请求的代码: public class MainActivity extends Activity implements OnClickListener { private Button btnGet; private WebV…

STM-32:GPIO 输出-点亮LED-流水灯-蜂鸣器

目录一、GPIO1.1GPIO简介1.2GPIO 硬件解析1.2.1保护二极管1.2.2 P-MOS、N-MOS 管1.2.3数据输入输出寄存器1.2.4复用功能输出1.2.5模拟输入输出1.3GPIO 的工作模式1.3.1 输入模式 (模拟/浮空/上拉/下拉)1.3.2 输出模式 (推挽/开漏)1.3.3 复用功能 (推挽/开漏)1.3.4 小结二、GPIO…

ChatGPT将引发大量而普遍的网络安全隐患

ChatGPT是一个基于人工智能的语言生成模型,它可以在任何给定的时间,使用自然语言生成技术,生成文本、对话和文章。它不仅可以被用来编写文本,还可以用来编写语言、生成图像和视频。目前, ChatGPT已广泛应用于语言翻译、…

【数据结构篇】-树(共计两万字,你真的搞懂了它吗)

友情链接:【数据结构与算法】首篇 - 思维导图 - 各部分内容目录 文章目录🚀树🚢一、树的原理精讲(一)树的定义(二)基本术语(三)树的性质🚢二、树的存储结构&a…

C++ STL:stack和queue的使用和底层实现

目录 一. 什么是stack和deque 二. stack和queue的使用方法 2.1 stack的常用接口 2.2 queue的常用接口 三. stack和queue的底层实现原理 3.1 容器适配器 3.2 deque(双端队列)的概念及抽象结构 3.3 deque的底层实现结构 3.4 deque的优缺点 —— 为…

try... excpet BaseException(异常处理捕获)

try ...except 是最常见的捕获处理异常的结构,其主要作用是将可能出现问题的代码块用try :包裹起来,不至于出现错误让程序崩溃,无法执行下去常见的try ...excpet 的结构有三种try:pass except BaseException as e &…

Azure SQL基础到实战(2)-部署

目录Azure 上的数据库服务的演变Azure SQL 部署选项Azure 虚拟机上的 SQL ServerIaaS 与PaaS无版本数据库服务SQL 托管实例SQL 数据库弹性数据库池Azure 上的数据库服务的演变 Azure SQL 是 Microsoft 作为 Azure 云计算平台的一部分提供的云数据库产品/服务。 与其他版本的 S…

含光热电站、有机有机朗肯循环、P2G的综合能源优化调度(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

算法---扫雷游戏

题目 让我们一起来玩扫雷游戏! 给你一个大小为 m x n 二维字符矩阵 board ,表示扫雷游戏的盘面,其中: ‘M’ 代表一个 未挖出的 地雷, ‘E’ 代表一个 未挖出的 空方块, ‘B’ 代表没有相邻(…

服务器部署前后端分离项目

服务器部署前后端分离项目 文章目录服务器部署前后端分离项目一、安装环境安装jdk1、在/usr/local目录下创建jdk文件夹,并将jdk安装包放到/usr/local/jdk包下并解压2、配置jdk的环境变量3、进行编译,4、检测是否安装成功安装tomcat1、将tomcat放到/usr/l…

Linux内核模块开发之创建slab内存缓存(kmem_cache_*)

Linux内核模块开发之创建slab内存缓存(kmem_cache_*)一、创建专用的内存缓存编程接口二、实现步骤三、内存缓存的数据结构四、完整代码示例4.1、源代码4.2、编译和执行一、创建专用的内存缓存编程接口 创建内存缓存 kmem_cache_create。指定内存缓存分配…

软件测试零基础好入门么

零基础学习软件测试不失为一个好的选择,虽然IT行业里对小白最友好的非软件测试莫属了,但是也要看你个人在学习软件测试这件事上面花费了多少的时间和努力了~ 每年毕业季,IT行业依然是比较热门且收入是最高的行业。对于应届毕业生来说想要进入…

数据结构学习之路-队列

队列(Queue)定义队列的接口设计(使用双向链表)用栈实现队列的接口设计双端队列(Deque)循环队列(Circle Queue)循环双端队列(Ciecle Deque)定义 队列是一种特…