算法刷题之路之链表初探(二)Leecode21合并两个有序链表

算法刷题之路之链表初探(二)

今天来学习的算法题是leecode141环形链表,是一道简单的入门题,话不多说!直接上!

条件(Leecode21)

在这里插入图片描述

重点!!!

我直接把解释写代码上啦!先上文字详解!!

ListNode prehead = new ListNode(-1);

创建一个新的链表节点 prehead,值为 -1,作为合并后链表的头节点的前置节点。

ListNode prev = prehead;

创建一个指针 prev,初始化为 prehead,用来构建新链表。

while (l1 != null && l2 != null) {

进入循环,只要 l1 和 l2 都不为 null。

if (l1.val <= l2.val) {

比较 l1 和 l2 当前节点的值,如果 l1 的值小于等于 l2 的值,执行以下操作:

prev.next = l1; 将 prev 的 next 指向 l1,将 l1 加入新链表。 l1 = l1.next; 移动 l1
到下一个节点。 else {

如果 l2 的值小于 l1 的值,执行以下操作:

prev.next = l2; 将 prev 的 next 指向 l2,将 l2 加入新链表。 l2 = l2.next; 移动 l2
到下一个节点。 prev = prev.next;

将 prev 指向新链表的最后一个节点,即刚刚加入的节点。

循环继续,直到 l1 或 l2 中有一个为空。

prev.next = l1 == null ? l2 : l1;

循环结束后,将剩余的未合并完的链表直接接到新链表的末尾。

return prehead.next;

返回 prehead 的 next,即新链表的头节点。

这段代码的核心思想是利用一个 prev 指针构建新的链表,依次比较两个链表的节点值,将较小的节点加入新链表中,直到其中一个链表为空,然后将剩余链表直接连接到新链表的末尾。

代码

public class Leecode21 {
    public class ListNode {
        int val;
        ListNode next;
        ListNode() {}
        ListNode(int val) { this.val = val; }
        ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    }


        public static void main(String[] args) {

        }
}
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        // 创建一个头节点 prehead,并初始化为值为 -1
        ListNode prehead = new ListNode(-1);

        // 将 prev 指向 prehead,用于构建新链表
        ListNode prev = prehead;

        // 循环条件:当 l1 和 l2 都不为 null 时
        while (l1 != null && l2 != null) {
            // 比较 l1 和 l2 当前节点的值
            if (l1.val <= l2.val) {
                // 如果 l1 的值小于等于 l2 的值,将 prev 的 next 指向 l1,并将 l1 向后移动一位
                prev.next = l1;
                l1 = l1.next;
            } else {
                // 如果 l2 的值小于 l1 的值,将 prev 的 next 指向 l2,并将 l2 向后移动一位
                prev.next = l2;
                l2 = l2.next;
            }
            // 将 prev 指向新链表的最后一个节点
            prev = prev.next;
        }

        // 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
        prev.next = l1 == null ? l2 : l1;

        // 返回合并后的链表,prehead.next 是新链表的头节点
        return prehead.next;
    }
}




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

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

相关文章

primetime中cell和net的OCV

文章目录 前言一、Cell OCV1. POCV coefficient file2. POCV Slew-Load Table in Liberty Variation Format&#xff08;LVF lib&#xff09; 二、Net OCV三、如何check OCV是否已加上&#xff1f;总结 前言 在生产中&#xff0c;外界环境的各种变化&#xff0c;比如PVT&#…

代码随想录第40天|动态规划

完全背包 完全背包物品可以无限使用 01背包核心代码 01背包中的二维dp数组的两个for遍历可颠倒, 而一维dp数组的一定先遍历物品再遍历背包容量状态转移方程(背包容量一定为递减) 完全背包核心代码 (只在完全背包中一维dp数组嵌套顺序可颠倒, 实际题目需要确定遍历顺序) 状…

云计算与生成式AI的技术盛宴!亚马逊云科技深圳 Community Day 社区活动流程抢先知道!

小李哥最近要给大家分享7月7日在深圳的即将举办的亚马逊云科技生成式AI社区活动Community Day &#xff0c;干货很多内容非常硬核&#xff0c;不仅有技术分享学习前沿AI技术&#xff0c;大家在现场还可以动手实践沉浸式体验大模型&#xff0c;另外参与现场活动还可以领取诸多精…

API-本地存储

学习目标&#xff1a; 掌握本地存储 学习内容&#xff1a; 本地存储介绍本地存储分类存储复杂数据类型 本地存储介绍&#xff1a; 以前我们页面写的数据一刷新页面就没有了&#xff0c;是不是? 随着互联网的快速发展&#xff0c;基于网页的应用越来越普遍&#xff0c;同时也…

中医药文化传承进校园活动授牌仪式在石家庄主办举办

青春闪“药”&#xff0c;我心向党。2024年6月30日&#xff0c;由河北省药品医疗器械检验研究院主办的”中医药文化传承进校园活动在石家庄主办。来自河北省各地24所学校作为示范学校现场接牌。 河北省科协科普部部长范玉鑫、河北省教育厅学位管理与研究生处副处长耿立艳、河北…

Springboot项目实训--day1

目录 一、软件安装 二、软件的简单了解 三、基础知识应用 1、四个常用注释 2、尝试新建类 3、控制反转&#xff08;IOC容器&#xff09; 4、返回数据给浏览器 5、浏览器传回数据给服务器 易错点 一、软件安装 需要安装的软件是idea专业版&#xff0c;刚使用的时候可以使…

mac|浏览器链接不上服务器但可以登微信

千万千万千万不要没有关梯子直接关机&#xff0c;不然就会这样子呜呜呜 设置-网络&#xff0c;点击三个点--选择--位置--编辑位置&#xff08;默认是自动&#xff09; 新增一个&#xff0c;然后选中点击完成 这样就可以正常上网了

Python 异常

文章目录 捕获异常捕获常规异常捕获指定异常捕获多个异常 else语法finally语法异常的传递 捕获异常 假设某处可能会出现异常&#xff0c;提前做好准备。 捕获常规异常 所有的异常都会被捕获&#xff0c;不指定异常。 语法&#xff1a; try:可能出错的代码 except:出现异常后…

Open3D 点云快速全局配准FGR算法(粗配准)

目录 一、概述 1.1原理和步骤 1.2关键技术和优势 1.3应用场景 二、代码实现 2.1 关键代码 2.1.1.函数&#xff1a;execute_fast_global_registration 2.1.2调用registration_fgr_based_on_feature_matching函数 2.2完整代码 三、实现效果 3.1原始点云 3.2粗配准后点…

写代码,为什么还需要作图?

引言 古人云 &#xff1a;一图胜千言&#xff0c;闲人说&#xff1a;无图无真相。 在日常的聊天工具当中&#xff0c;无论是使用微信&#xff0c;还是钉钉。使用图片或表情包的频次越来越高&#xff0c;那是为什么呢&#xff1f;其实在互联网没有那么发达的时候&#xff0c;我…

算法题笔记

主要记录python的力扣题解 参考的优质网站&#xff1a; 算法通关手册&#xff08;LeetCode&#xff09; | 算法通关手册&#xff08;LeetCode&#xff09; (itcharge.cn) 代码随想录 (programmercarl.com) 2024.6.28 题目&#xff1a;轮转数组 官网连接&#xff1a;189. …

Linux环境安装配置nginx服务流程

Linux环境的Centos、麒麟、统信操作系统安装配置nginx服务流程操作&#xff1a; 1、官网下载 下载地址 或者通过命令下载 wget http://nginx.org/download/nginx-1.20.2.tar.gz 2、上传到指定的服务器并解压 tar -zxvf nginx-1.20.1.tar.gzcd nginx-1.20.1 3、编译并安装到…

武汉星起航:跨境电商流量红利爆发,2023年出海企业迎突破增长

在数字时代的浪潮中&#xff0c;中国跨境电商以惊人的爆发力崭露头角&#xff0c;成为全球贸易的璀璨新星。2023年数据显示&#xff0c;跨境电商出口额高达1.83万亿元&#xff0c;同比增长19.6%&#xff0c;这一显著增速不仅刷新纪录&#xff0c;更为众多出海企业带来了前所未有…

vscode搭建suricata调试环境

一、环境 windows10 wsl2 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.2 LTS Release: 20.04 Codename: focal二、编译 2.1 下载源码 wget https://www.openinfosecfoundation.org/download/suri…

配电智能网关赋能电力系统智能化运行维护

随着智能电网和物联网技术的不断发展&#xff0c;两者之间的融合应用成为电力行业的重要趋势。配电智能网关作为连接两者的关键设备&#xff0c;在智能电网的物联网应用中发挥着重要作用。 配电智能网关能够实现对电力系统的实时监控、数据采集、远程控制等功能&#xff0c;为…

【Vue】微信禁止打开,可弹出提示:请用360、搜狗浏览器的极速模式打开。

需求 某网站链接&#xff0c;使用微信端打开&#xff0c;某些材料自动下载会造成泄密。所以添加限制&#xff1a;微信禁止打开&#xff0c;可弹出提示&#xff1a;请用360、搜狗浏览器的极速模式打开。 处理前 微信访问该链接&#xff0c;点击【继续访问】可直接跳转到该网站 处…

苍穹外卖项目 常用注解 + 动态sql

常用注解 常见的注解解析方法有两种&#xff1a; 编译期直接扫描&#xff1a;编译器在编译 Java 代码的时候扫描对应的注解并处理&#xff0c;比如某个方法使用Override 注解&#xff0c;编译器在编译的时候就会检测当前的方法是否重写了父类对应的方法。运行期通过反射处理&…

ROS2使用C++开发动作通信

1.开发接口节点 cd chapt4_ws/ ros2 pkg create robot_control_interfaces --build-type ament_cmake --destination-directory src --maintainer-name "joe" --maintainer-email "1027038527qq.com" mkdir -p src/robot_control_interfaces/action touch…

C#中的时间数据格式化详解与应用示例

文章目录 1、基本概念基本格式化方法 2、实用的时间格式化方法格式化日期格式化时间格式化时间戳解析日期时间字符串 3、实际应用4、应用示例结论 在软件开发中&#xff0c;时间数据是无处不在的。无论是用户登录时间、数据备份时间&#xff0c;还是日志记录&#xff0c;都需要…

NSE and KGE

NSE&#xff08;Nash-Sutcliffe Efficiency&#xff09;&#xff1a; 解释&#xff1a;NSE 是衡量水文模型模拟结果与观测值之间拟合程度的指标。它计算模拟值与观测值之间的均方误差&#xff0c;并将其与观测值的方差进行比较。NSE 的取值范围为-∞至 1&#xff0c;值越接近 1…