力扣---LeetCode21. 合并两个有序链表(链表经典题)

news2024/11/27 4:37:37

文章目录

  • 前言
  • 21. 合并两个有序链表
    • 链接:
    • 方法一:取小尾插
      • 1.1代码:
      • 1.2 流程图:
      • 1.3 注意:
    • 方法二:带哨兵位
      • 2.1代码:
      • 2.2流程图:
  • 总结


前言

焦虑不会消除明天的悲伤 只会让你今天的力量荡然无存
本章的内容是力扣每日随机一题的部分方法的解析


提示:以下是本篇文章正文内容,下面案例可供参考

21. 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
在这里插入图片描述

链接:

21. 合并两个有序链表 link

方法一:取小尾插

1.1代码:

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{
    struct ListNode* head=NULL;
    struct ListNode* tail=NULL;
    if(list1==NULL)//判断是否是空链表
        return list2;
    if(list2==NULL)//判断是否是空链表
        return list1;
    while(list1&&list2)
    {
        if(list1->val<list2->val)
        {
            if(tail==NULL)
            {
                head=tail=list1;
            }
            else
            {
                tail->next=list1;
                tail=tail->next;
            }
            list1=list1->next;
        }
        else
        {
            if(tail==NULL)
            {
                head=tail=list2;
            }
            else
            {
                tail->next=list2;
                tail=tail->next;
            }
            list2=list2->next;
        }
    }
    if(list1)
    {
        tail->next=list1;
    }
    if(list2)
    {
        tail->next=list2;
    }
    return head;
}

1.2 流程图:

在这里插入图片描述

1.3 注意:

  • 要注意判断list1和;ist2是否是空链表
  • 要考虑第一次插入的情况是没有结点的

方法二:带哨兵位

所谓带哨兵位的链表,就是一个附加的链表的节点,该节点作为第一个节点,它的值域并不存储任何东西,只是为了操作的方便引用的。
如果一个链表有哨兵节点的话,那么线性表的第一个元素应该是链表的第二个节点.

2.1代码:

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{
    struct ListNode* head=NULL;
    struct ListNode* tail=NULL;
    head=tail=(struct ListNode*)malloc(sizeof(struct ListNode));
    if(list1==NULL)
        return list2;
    if(list2==NULL)
        return list1;
    while(list1&&list2)
    {
        if(list1->val<list2->val)
        {
     
            tail->next=list1;
            tail=tail->next;
            list1=list1->next;
        }
        else
        {
            tail->next=list2;
            tail=tail->next;
            list2=list2->next;
        }
    }
    if(list1)
    {
        tail->next=list1;
    }
    if(list2)
    {
        tail->next=list2;
    }
    struct ListNode* del=head;
    head=head->next;
    free(del);
    del=NULL;
    return head;
}

2.2流程图:

在这里插入图片描述


总结

Ending,今天的力扣每日一题内容就到此结束啦,如果后续想了解更多,就请关注我吧,一键三连,还有许多种方法没有写出希望各位佬补充哦~

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

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

相关文章

springboot概述

脚手架: 因为创建的为web项目&#xff0c;有这两个文件夹 在idea中也可以使用脚手架 会直接或间接包含依赖 启动类 单一模块: 启动类要放在根包下边&#xff0c;其他的业务放在根包或者根包的子包 多个模块: restController包含controller且每个方法都包含responseBody注解&…

这可能是你看过最详细的Java集合篇【二】—— LinkedList

文章目录 LinkedList继承关系数据结构变量构造方法添加元素相关方法查找元素相关方法删除元素相关方法清空方法遍历方法其它方法常见面试题 LinkedList LinkedList底层数据结构是双向链表。链表数据结构的特点是每个元素分配的空间不必连续、插入和删除元素时速度非常快、但访…

10年+工作经验总结:测试工程师职业成长路线图

一、功能测试工程师必备技能 1. 功能测试理论 主要包括&#xff1a; 软件测试流程 需求理解 测试用例设计&#xff08;编写测试用例的策略&#xff09; 执行测试用例 提交bug(bug是由什么组成&#xff0c;bug处理流程&#xff0c;bug优先级&#xff0c;bug的定位等) 回归…

基于Vue的web设计打印方案

企业信息化例如ERP,OA等等都会存在纸质单据打印的情况&#xff0c;需要在企业内部流转&#xff0c;打印设计也有很多方案&#xff0c;例如fastReport,bartender等等&#xff0c;今天要说的是 vue-plugin-hiprint&#xff0c;开源的web打印插件&#xff0c;基于此插件可以集成模…

SpringBoot 中如何正确的实现模块日志入库?

目录 1.简述2.踩坑记录3.LoginController4.LoginService5.LoginLogService5.1 Async实现异步5.2 自定义线程池实现异步1&#xff09;自定义线程池2&#xff09;复制上下文请求3&#xff09;自定义线程池实现异步 6.补充&#xff1a;LoginService 手动提交事务 背景&#xff1a;…

并发编程之可重入锁ReentrantLock

文章目录 前言ReentrantLock原理ReentrantLock VS Synchronized源码解析ReentrantLock同步机制ReentrantLock可重入机制ReentrantLock可中断机制ReentrantLock超时机制条件变量Condition 写在最后 前言 大家都知道在并发编程中一般会用到多线程技术&#xff0c;多线程技术可以…

2023年主流的选择仍是Feign, http客户端Feign还能再战

&#x1f473;我亲爱的各位大佬们好&#x1f618;&#x1f618;&#x1f618; ♨️本篇文章记录的为 微服务组件之http客户端Feign 相关内容&#xff0c;适合在学Java的小白,帮助新手快速上手,也适合复习中&#xff0c;面试中的大佬&#x1f649;&#x1f649;&#x1f649;。 …

UE4 架构初识(三)

UE4仿真引擎学习 一、架构基础 1. PlayerController PlayerController&#xff08;玩家控制器&#xff09; 是Pawn和控制它的人类玩家间的接口。PlayerController本质上代表了人类玩家的意愿。当设置PlayerController时&#xff0c;您需要考虑的一个事情就是您想在PlayerCont…

太阳辐射预报模式WRF-SOLAR在农业生态领域中的实践技术应用

太阳能是一种清洁能源&#xff0c;合理有效开发太阳能资源对减少污染、保护环境以及应对气候变化和能源安全具有非常重要的实际意义&#xff0c;为了实现能源和环境的可持续发展&#xff0c;近年来世界各国都高度重视太阳能资源的开发利用&#xff1b;另外太阳辐射的光谱成分、…

Navicat15数据库导表及乱码问题解决

本地环境 Win10 PHPstudy_Pro(小皮) PHP5.6 MySQL5.7 连接MySQL数据库 1.启动Navicat15 2.点击连接按钮,并选择MySQL子项 3.连接对话框 连接名:自己分的清的名字即可 主机:数据的地址 若连接非本地mysql只需将主机localhost换成需要连接数据的ip地址即可&#xff0c;输入数…

Linux下一切皆文件与指令的本质(可执行程序),which指令等

Linux下一切皆文件 在Linux下的话&#xff0c;一切皆文件。主要是看待诸如软硬件设备与磁盘文件的看法&#xff1a;一切皆文件&#xff0c;比如说显示器它也是文件&#xff0c;键盘也是文件&#xff0c;普通文件肯定是文件。首先就是显示器这个东西&#xff0c;它其实就是可以打…

Rancher 部署 Elasticsearch 8.5.1 版本服务

前言 从 es7 升级到 es8 之后&#xff0c;启动容器默认启用了 ssl 安全传输配置&#xff0c;但是在 Rancher 中部署的话&#xff0c;需要挂载 pvc 实现 data、logs 等目录持久化&#xff0c;启用 ssl 需要对证书等进行操作&#xff0c;非常麻烦&#xff0c;非常坑。 本文以启…

深度解析LED显示屏SMD封装

LED器件占LED显示屏成本约40%&#xff5e;70%&#xff0c;LED显示屏成本的大幅下降得益于LED器件的成本降低。5分钟带你了解SMD LED。LED封装质量的好坏对LED显示屏的质量影响较大。封装可靠性的关键包括芯片材料的选择、封装材料的选择及工艺管控。另外&#xff0c;严格的可靠…

SpringBoot - 事件机制使用详解(ApplicationEvent、ApplicationListener)

Spring 事件机制使用观察者模式来传递事件和消息。我们可以使用 ApplicationEvent 类来发布事件&#xff0c;然后使用 ApplicationListener 接口来监听事件。当事件发生时&#xff0c;所有注册的 ApplicationListener 都会得到通知。事件用于在松散耦合的组件之间交换信息。由于…

移动端网页特效

文章目录 一、触屏事件&#xff08;一&#xff09;触屏事件概述&#xff08;二&#xff09; 触摸事件对象&#xff08;TouchEvent&#xff09;&#xff08;三&#xff09; 移动端拖动元素 二、移动端常见特效&#xff08;一&#xff09;案例&#xff1a;移动端轮播图&#xff0…

Windows安装Docker

目录 一.启用Hyper-V和容器特性 1.右键Windows点击应用和功能 2.点击程序和功能​编辑 3.启用或关闭Windows功能​编辑 4.开启 Hyper-V 和容器特性 二.下载安装Docker 1.下载Docker &#xff08;Download Docker Desktop | Docker&#xff09; 2.点击安装 3.把第一个选…

《商用密码应用与安全性评估》第三章商用密码标准与产品应用3.3商用密码产品检测

商用密码产品检测框架 GM/T 0028-2014《密码模块安全技术要求》将密码模块安全分为从一级到四级安全性逐次增强的4个等级GM/T 0008-2012《安全芯片密码检测准则》将安全芯片安全分为从一级到三级安全性逐次增强的3个等级。 对于不同安全等级密码产品的选用&#xff0c;应考虑以…

Docker --- 简介、安装

一、什么是Docker 微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&#xff0c;依赖的组件非常多&#xff0c;不同组件之间部署时往往会产生一些冲突。 在数百上千台服务中重复部署&#xff0c;环境不一定一致&#xff0c;会…

【故障定位】基于粒子群优化算法的故障定位及故障区段研究【IEEE33节点】(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …

VS2017配置Ipopt-基于Windows环境

文章目录 1、 背景2、 配置流程3、测试THE END 1、 背景 \qquad 本科研狗最近手头有个非线性规划模型需要求解&#xff0c;因为Ipopt是一款开源的NLP求解器&#xff0c;所以想要使用一下下。于是直接搜Ipopt官网&#xff0c;果然令人惊喜地列出了安装教程&#xff0c;但对于Win…