单链表OJ题:LeetCode--21.合并两个有序链表

news2024/10/5 14:27:20

朋友们、伙计们,我们又见面了,今天给大家带来的是LeetCode中876题:链表的中间结点

数 据 结 构:数据结构专栏
作          者:stackY、

C  语   言  :C语言专栏

LeetCode :LeetCode刷题训练营

LeetCode--21.合并两个有序链表 :https://leetcode.cn/problems/merge-two-sorted-lists/description/

目录

1.题目介绍

2.实例演示 

 3.解题思路


1.题目介绍

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

2.实例演示 

 

 3.解题思路

合并两个有序链表我们通常采用的方法是遍历两个链表,然后取较小的结点进行尾插,尾插法和我们之前见到过的OJ题:删除链表元素中使用的方法很相似,当然这里也是要区分第一次尾插和接下来的尾插,如果有一个链表为空那么直接返回另外一个链表的头结点,如果两个链表都不为空,这时如果一个结点尾插完了,另外一个结点还没有结束,这时就不需要在依次尾插,直接将剩下的结点链接在后面即可:

代码演示:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
    struct ListNode* phead1 = list1;
    struct ListNode* phead2 = list2;

    //新的头和新的尾
    struct ListNode* newhead = NULL;
    struct ListNode* tail = NULL;

    //有一个链表为空则返回其它链表的头
    if(phead1 == NULL)
    {
        return phead2;
    }
    if(phead2 == NULL)
    {
        return phead1;
    }

    //正常情况
    while(phead1 && phead2)
    {
        //小的进行尾插
        if(phead1->val > phead2->val)
        {
            //第一次尾插
            if(tail == NULL)
            {
                newhead = tail = phead2;
            }
            else
            {
                //尾插
                tail->next = phead2;
                //更新尾
                tail = tail->next;
            }
            //迭代
            phead2 = phead2->next;
        }
        else
        {
            if(tail == NULL)
            {
                newhead = tail = phead1;
            }
            else
            {
                tail->next = phead1;
                tail = tail->next;
            }
            phead1 = phead1->next;
        }
       
    }
    //一个链表尾插完之后将剩下的直接链接在尾的后面
    if(phead1 == NULL)
    {
        tail->next = phead2;
    }
    if(phead2 == NULL)
    {
        tail->next = phead1;
    }
    return newhead;
}

今天的博客就分享到这里,喜欢的老铁留下你的三连,感谢感谢!我们下期再见!! 

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

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

相关文章

5月16日,亚马逊云科技邀你一起探索游戏的无限可能

游戏精品化趋势越发明显,如何才能让技术帮助创意更好地实现?游戏出海如火如荼,如何才能在全球市场分一杯羹?生成式AI横空出世,如何才能充分利用,实现降本增效、利润提升?相信每个游戏人&#xf…

Word控件Spire.Doc 【文本框】教程(3):如何在 Word 中插入或删除文本框

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

基于VC + MSSQL实现的县级医院医学影像PACS

一、概述: 基于VC MSSQL实现的一套三甲医院医学影像PACS源码,集成3D后处理功能,包括三维多平面重建、三维容积重建、三维表面重建、三维虚拟内窥镜、最大/小密度投影、心脏动脉钙化分析等功能。 二、医学影像PACS实现功能: 1、…

漏洞分析丨CVE-2012-1873

一、漏洞简述 cve-2012-1873同样是一个著名的堆溢出漏洞,他是IE6-8中MSHTL.dll中的CTableLayout::CalculateMinMax函数里,程序在执行时会以HTML代码中的元素span属性作为循环控制次数向堆中写入数据。第一次会优先根据span申请堆空间,当我们…

【企业信息化】第3集 免费开源ERP: Odoo 16 POS终端管理系统

文章目录 前言一、概览二、硬件三、使用功能 前言 世界排名第一的免费开源ERP: Odoo 16 POS终端管理系统。几分钟内完成设置,几秒内完成销售。 一、概览 Odoo POS 基于智能界面,任何零售公司均可毫不费力地使用 因为其极具灵活性,您可配置 …

2023最全 Java 高频面试合集,掌握这些你也能进大厂!

进大厂是大部分程序员的梦想,而进大厂的门槛也是比较高的,所以这里整理了一份阿里、美团、滴滴、头条等大厂面试大全,对于 Java 后端的朋友来说应该是最全面最完整的面试备战仓库,为了更好地整理每个模块,我也参考了很…

版本控制器git

目录 一、版本控制系统 二、工作流程和使用命令 (1)工作流程 (2)一次完整流程的相关命令 1.初始化1个空的本地仓库 2.克隆方式1个远程仓库到本地仓库 3.新文件添加到暂存区 4.查看仓库状态,显示有变更的文件 5…

Java实现杨辉三角

1 问题 实现杨辉三角。 2 方法 public class textttt01 { public static void main(String[] args) { //定义了一个长度为10&#xff0c;高度为10的二维数组&#xff0c;数组中的值都为0&#xff1b; int[][] arrnew int[10][10]; for (int i0;i<ar…

开源轻量级 IM 框架 MobileIMSDK 的Uniapp客户端库已发布

一、基本介绍 MobileIMSDK-Uniapp端是一套基于Uniapp跨端框架的即时通讯库&#xff1a; 1&#xff09;超轻量级、无任何第3方库依赖&#xff08;开箱即用&#xff09;&#xff1b;2&#xff09;纯JS编写、ES6语法、高度提炼&#xff0c;简单易用&#xff1b;3&#xff09;基于…

html实现经典捕鱼达人小游戏

文章目录 1.设计来源1.1 游戏界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/130638634 html实现经典捕鱼达人小游戏源码 &#xff0c;99.99%的还原实物&#xff0c;起…

【办公】解决京瓷打印机总是出现烦人的“在手送纸盘中装纸 彩色纸”的问题

问题 打印机是日常办公的常见工具&#xff0c;京瓷是著名的打印机品牌&#xff0c;而且是很多事业单位首选的打印机品牌。然而在日常使用中京瓷打印机总是会出现烦人的“在手送纸盘中装纸 彩色纸”的问题&#xff0c;如下图所示&#xff1a; 一旦出现该问题&#xff0c;就需要…

给XZZ准备的小攻略(私人向)

定时发送邮件功能&#xff1a; 定时发送邮件的功能位于 homework 的 views.py 中 使用的模块是 apscheduler &#xff08;我读作ap司改就&#xff09; 准备的部分&#xff1a;&#xff08;了解即可&#xff09; 安装好 django-apscheduler 后&#xff0c;在 setting.py 中添…

python 调用golang 注意事项

1.调用编译后的动态库文件&#xff0c;报头文件错误 原因&#xff1a; 不同平台下编译的add.so 不能通用&#xff0c;Windows下可以运行的so文件&#xff0c;linux下就不能运行&#xff0c;需要重新编译linux的so文件&#xff1b; 该报错可能就是跨平台使用动态库文件了&…

yolov5爬坑小作文

第一坑 做完训练集&#xff0c;配置要yaml文件后&#xff0c;笔者启动了训练命令 python train.py --data 我的yaml位置 --batch-size 我的每次进行一次反向传播之前需要前向计算的图片张数 --device 我的GPU编号 之后报错 OSError: [WinError 1455] 页面文件太小,无法完成…

检测数据类型

//typeof() 对于基本数据类型没问题&#xff0c;遇到引用数据类型不管用 console.log(typeof 666) //number console.log(typeof [1,2,3]) //object //instanceof() 只能判断引用数据类型&#xff0c;不能判断基本数据类型 console.log( [] instanceof Array) //true …

Acunetix 15.6 (Linux, Windows) - Web 应用程序安全测试

Acunetix 15.6 (Linux, Windows) - Web 应用程序安全测试 请访问原文链接&#xff1a;https://sysin.org/blog/acunetix-15/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Acunetix 漏洞扫描器&#xff0c;管理您的网络安全。…

电脑待机怎么设置?分享4个宝藏方法!

案例&#xff1a;电脑待机怎么设置 【有时候我使用电脑时可能因为各种事而被打断&#xff0c;但是不是很想让电脑关机&#xff0c;请问大家电脑待机时间应该怎么设置呀&#xff1f;】 有时候我们在使用电脑时可能需要做别的一些事&#xff0c;这时我们的电脑会进入待机状态。…

裸奔时代,隐私何处寻?

随着互联网的普及&#xff0c;人工智能时代的大幕初启&#xff0c;数据作为人工智能的重要支撑&#xff0c;数据之争成为“兵家必争之地”&#xff0c;随之而来的就是&#xff0c;各种花式手段“收割”个人信息&#xff0c;用户隐私暴露程度越来越高&#xff0c;隐私保护早已成…

空间权重矩阵与相关性检验(Stata)

空间权重矩阵与相关性检验(Stata) 文章目录 空间权重矩阵与相关性检验(Stata)[toc]1 空间相关性检验1.1 全局空间相关性检验1.2 局部空间自相关检验1.3 散点图 2 权重矩阵2.1 截断距离权重矩阵2.2 反距离权重矩阵 1 空间相关性检验 cd "D:\Allcode\Stata\Spatial-Econome…

如何在知行之桥EDI系统中修改ICN?

EDI电子数据交换中的ICN是什么&#xff1f; 在EDI术语中&#xff0c;ICN# 的全称为Interchange Control Number&#xff0c;是文件的发送方分配的唯一标识符&#xff0c;可以识别每一个文件。 我们常见的符合X12和EDIFACT报文标准的文件中&#xff0c;ICN#分别指的是ISA13和U…