leetcode-合并两个有序链表(详解)

2023-11-19

前言

路漫漫及修远兮。

一、题链接

题意

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

在这里插入图片描述

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

例题二:

输入:l1 = [], l2 = []
输出:[]

例题三:

输入:l1 = [], l2 = [0]
输出:[0]

题思路

思路一、把一个链表移到另一个链表上。
思路二、尾插。
这里我是讲思路二。

我们先要定义两个指针分别指向这两条链表的头节点,用这两个指针来比较链表中的大小。

 struct ListNode*l1Head=l1;
 struct ListNode*l2Head=l2;

我们这里又要定义两个指针来跟踪l1head和l2head的后一个节点,这样可以使l1head和l2head回到下一个节点来继续比较。

struct ListNode*l1tail=NULL,*l2tail=NULL;
l1tail=l1Head->next;
l2tail=l2Head->next;

我们还要先开辟一块空间来当哨兵位,然后把小的尾插到哨兵位的后面,哨兵位不放东西。
且再用一个指针来保存哨兵位的地址,方便最后返回链表。

struct ListNode*trace=(struct ListNode*)malloc(sizeof(struct ListNode));
struct ListNode*head=trace;

注意:
链表的长度不等,只要有一条链表比较完了,那么只要把剩下的链表直接尾插。

题思路图解

在这里插入图片描述

题代码

代码如下:

struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2)
{
    struct ListNode*l1Head=l1;
    struct ListNode*l2Head=l2;
    struct ListNode*l1tail=NULL,*l2tail=NULL;
    struct ListNode*trace=(struct ListNode*)malloc(sizeof(struct ListNode));
    trace->next=NULL;
    struct ListNode*head=trace;
    while(l1Head!=NULL&&l2Head!=NULL)
    {
        l1tail=l1Head->next;
        l2tail=l2Head->next;
        if(l1Head->val<l2Head->val)
        {
            trace->next=l1Head;
            trace=l1Head;
            l1Head=l1tail;
        }
        else
        {
            trace->next=l2Head;
            trace=l2Head;
            l2Head=l2tail;
        }
    }
    if(l1Head)
    {
        trace->next=l1Head;
        
    }
    if(l2Head)
    {
        trace->next=l2Head;
        
    }
    return head->next;
}

总结

欢迎点赞呀!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leetcode-合并两个有序链表(详解) 的相关文章

  • 华为OD机试 - 解密犯罪时间(Java)

    题目描述 警察在侦破一个案件时 得到了线人给出的可能犯罪时间 形如 HH MM 表示的时刻 根据警察和线人的约定 为了隐蔽 该时间是修改过的 解密规则为 利用当前出现过的数字 构造下一个距离当前时间最近的时刻 则该时间为可能的犯罪时间 每个
  • C++中的.和->

    C 中的 和 gt 1 C 中的点 的应用 如果是一个对象或者引用去调用成员变量或者成员函数函数的话 会使用到点 include
  • ArrayList与顺序表

    目录 编辑 一 线性表 二 顺序表 1 接口的实现 1 打印顺序表 2 新增元素 3 判定是否包含某个元素 4 查找某个元素对应的位置下标 5 获取 pos 位置的元素 6 获取顺序表长度 7 给 pos 位置的元素设为 value 更新的
  • 2023最新华为OD机试,独家整理总结上岸技巧,答读者问华为OD 华为OD机试备考攻略

    文章目录 华为OD在线刷题OJ 华为OD统一考试A卷 B卷 新题库说明 什么是华为OD 华为 OD 应聘流程 华为 od 机试 机试 分数 院校问题 华为 OD 机试 二本院校有机会吗 华为 OD 机试 跨专业可以参加华为OD 华为 OD
  • 使用c++超详细解释数据结构中的顺序栈和链栈

    在C 中 栈 Stack 是一种数据结构 它可以用来存储数据 并支持两种基本操作 压入 Push 和弹出 Pop 栈的特点是后进先出 Last In First Out LIFO 也就是最后压入的元素最先弹出 栈可以用数组或链表等数据结构来
  • 【每日一题】leetcode 二叉树层序遍历 - 介绍

    层序遍历 遍历顺序为 F B G A D I C E H 一层一层遍历 代码 import java util ArrayList import java util LinkedList import java util List impo
  • 单链表——多项式相加

    时间限制 1000ms 内存限制 256M 实验目的 编写代码 使用两个单链表表示下面的多项式 完成两个多项式相加 并输出相加后的多项式结果 实验要求 1 单链表的类型定义如下 typedef int datatype 结点数据类型 假设为
  • 【华为OD机试】五子棋迷(C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 题目描述 张兵和王武是五子棋迷 工作之余经常切磋棋艺 这不 这会儿又下起来了 走了一会儿 轮张兵了 对
  • 数据结构之数组

    目录 前言 线性表与连续内存 数组是如何支持随机访问 数组的插入与删除 数组越界 总结 参考文章 前言 数组是我们平时开发中经常遇到的一种数据结构 提起数组 我们能想到最大的特点就是 要提前定义好 需要提前申请好内存空间 数组是一种线性表数
  • leetcode-合并两个有序链表(详解)

    合并两个有序链表 前言 一 题链接 题意 题思路 题思路图解 题代码 总结 前言 路漫漫及修远兮 一 题链接 题意 将两个升序链表合并为一个新的 升序 链表并返回 新链表是通过拼接给定的两个链表的所有节点组成的 输入 l1 1 2 4 l2
  • 夯实C++基础之刷题:链表——3合并两个有序列表

    题目 解题 递归和迭代 我的理解 递归是自己调用自己 迭代是按思路往下走 1 递归 class Solution public ListNode mergeTwoLists ListNode list1 ListNode list2 递归
  • 算法篇--链表求和

    问题描述 给两个链表 每个链表为一个整数的倒序 如下 1 2 3 4 5 7 9 两个数字的结果 321 9754 10075 那么 请得到 链表的结果为 5 7 0 0 1 思考 思路总结 两个链表肯定有一个最长的 等于情况取哪个都行 所
  • 刷题之142. 环形链表 II

    给定一个链表的头节点 head 返回链表开始入环的第一个节点 如果链表无环 则返回 null 如果链表中有某个节点 可以通过连续跟踪 next 指针再次到达 则链表中存在环 为了表示给定链表中的环 评测系统内部使用整数 pos 来表示链表尾
  • java中String作为参数传递终极解决

    今天我遇到一个问题就是string的传值问题 它虽然是一个引用数据类型 但是却和基本数据类型一样无法被改变 我看到网上的很多解释都很离谱 比如说很多解释说String要看成和Integer一样的包装类 看成 是char 的包装类 所以和其一
  • C++ 智能指针详解

    点击蓝字 关注我们 参考资料 C Primer中文版 第五版 我们知道除了静态内存和栈内存外 每个程序还有一个内存池 这部分内存被称为自由空间或者堆 程序用堆来存储动态分配的对象即那些在程序运行时分配的对象 当动态对象不再使用时 我们的代码
  • 算法题-简单系列-04-链表中倒数最后k个结点

    文章目录 1 题目 1 1 快慢指针 1 题目 输入一个长度为 n 的链表 设链表中的元素的值为 ai 返回该链表中倒数第k个节点 如果该链表长度小于k 请返回一个长度为 0 的链表 1 1 快慢指针 代码中的类名 方法名 参数名已经指定
  • 代码随想录算法训练营Day3 | 203.移除链表元素、707.设计链表、59.螺旋矩阵II

    LeetCode 203 移除链表元素 本题思路 就是常规的移除链表中的元素的操作 需要注意的点 头节点 head val val 的情况的处理 如果 head val val 就要继续往后 head head next 因此我们要遍历到第
  • 华为OD机试 Python 【最大载货量】

    描述 在火车站旁的货运站 小明负责调度2K辆中转车 其中K辆用于干货 K辆用于湿货 每批到站的货物来自不同的供货商 需要按照顺序装入中转车 注意 一个供货商的货物只能装在一辆车上 不能分开 但是 一辆车可以放多个供货商的货物 问题是 要让所
  • 206.翻转链表

    翻转链表 力扣 LeetCode 官网 全球极客挚爱的技术成长平台 备战技术面试 力扣提供海量技术面试资源 帮助你高效提升编程技能 轻松拿下世界 IT 名企 Dream Offer https leetcode cn problems re
  • 带头双向循环链表基础

    带头双向循环链表基础 销毁 销毁 void ListDestory ListNode phead void ListDestory ListNode phead assert phead ListNode cur phead gt next

随机推荐

  • pytorch小问题

    pytorch张量的保存和恢复 tensor本身就是对象 如果想要保存和恢复对应的对象 使用 torch save 和 torch load即可 就像picke的load 和dump一样 t2 torch randn 1024 1024 t
  • Java Spring @Scheduled 定时任务crontab表达式设置

    Java Spring Scheduled 定时任务crontab表达式设置 1 Cron详解 2 例子 参考 1 Cron详解 Cron表达式是一个字符串 字符串以5或6个空格隔开 分为6或7个域 每一个域代表一个含义 Cron有如下两种
  • React(一):React的设计哲学 - 简单之美

    React 一 React的设计哲学 简单之美 React 二 React开发神器Webpack React 三 理解JSX和组件 React 四 虚拟DOM Diff算法解析 React 五 使用Flux搭建React应用程序架构 Rea
  • Java程序员开发软件(工具)清单

    亲 你准备好了吗 001 项目管理 禅道 JIRA 002 办公协同 钉钉 003 工作邮件 Foxmail OutLook 004 项目文档 MS Office Word Excel PowerPoint WPS 005 MD 笔记 Ty
  • openGL之API学习(六十九)水平同步 垂直同步

    垂直和水平是CRT中两个基本的同步信号 水平同步信号决定了CRT画出一条横越屏幕线的时间 垂直同步信号决定了CRT从屏幕顶部画到底部 再返回原始位置的时间 而恰恰是垂直同步代表着CRT显示器的刷新率水平 垂直同步打开 那么在游戏中 或许强劲
  • 用 LangChain 构建基于资料库的问答机器人(二):从资料源中提取文本信息

    大家好 我是学生大使 Jambo 这个系列的目标是做出一个根据资料回答问题的机器人 那么从资料源中提取文本信息就是一件必要的事 但我们的资料源格式是多样的 比如 PDF Word HTML PPT 等等 甚至有的资料源来自于网络 这些格式都
  • Android studio 怎样连接手机运行,Android studio连接手机调试

    今天百度了一下如何在在Android studio如何在真机上运行 比较复杂 看了很多 现在给大家总结一下 1 首先要将手机连接到电脑上 直接在电脑上安装一个应用宝 然后在手机上也安装一个应用宝 通过应用宝将手机连接到电脑上 2 打开手机的
  • Nacos下载安装与配置(windows)

    一 Nacos下载 外网不好下载以下提供了两个版本 官网地址 https nacos io zh cn 蓝奏云地址 nacos server 1 4 1 zip 蓝奏云 1 4 1 版本 windows nacos server 2 0 0
  • 像智能手机一样造车,可能吗?

    造车这件事有多火 从小鹏 理想等昔日 造车新势力 在互联网军团的入局浪潮中 都变成了 前浪 就可见一斑 春节前后 我们见证了一波波互联网企业在汽车领域的布局 百度与吉利组建合资公司 苹果传出与韩国现代合作 阿里与上汽的智己汽车注册不到20天
  • 2023年VSCode插件最新推荐(54款)

    本文介绍前端开发领域常用的一些VSCode插件 插件是VSCode最重要的组成部分之一 本文列出了我自己在以往工作经验中积累的54款插件 个人觉得这些插件是有用或有趣的 根据它们的作用 我粗略的把它们分成了代码管理 文本和图片处理 前端框架
  • 端到端学习在车辆测距中的探索与实践

    yolo车距1 订阅车距专栏获得源码 http t csdn cn sU3U6 随着深度学习技术的快速发展 端到端学习在计算机视觉领域取得了显著的成果 端到端学习是一种直接从输入数据到输出结果的模型训练方法 无需进行复杂的特征工程 在车辆测
  • 【Arduino学习】05.驱动4个数码管

    数码管介绍 如图 本次使用的数码管为共阴极 四个数码管有 12 个引脚 可以分为位选脚和段选脚 段选脚 8个引脚a b c d e f g 位选脚 4 个引脚 D1 D2 D3 D4 哪个数码管显示由片选脚决定 片选脚为高电平 则该数码管点
  • 九宫格人车识别

    一 原理 通过霍夫检测圆的个数来识别小人位置 二 过程 1 二值图像 2 去掉宫格内容 便于分割 3 对二值图填补 减少纹理 4 分割九宫格 依次检测每个宫格中圆个数 5 最终显示小人所在宫格图片 在img6 jpg中 详细程序运行结果 三
  • xshell连接提示Linux服务器发送了一个意外的数据包

    服务器发送了一个意外的数据包received 3 expected 20 打开需要连接的Linux主机 编辑vim etc ssh sshd config 在最后一行添加 KexAlgorithms curve25519 sha256 li
  • Java通过自定义类加载器模拟冰蝎免杀功能

    一 Java类加载器 类加载器属于JVM的一个重要知识点 也是Java安全里命令执行 webshell管理器编写的常用技术 类加载器简介 我们知道java源文件在运行前会被编译为class类文件 存放着编译后JVM虚拟机指令的二进制字节流
  • 字符编码悉知

    1 查看windows系统代码页 代码页是字符集编码的别名 也有人称 内码表 早期 代码页是IBM称呼电脑BIOS本身支持的字符集编码的名称 当时通用的操作系统都是命令行界面系统 这些操作系统直接使用BIOS供应的VGA功能来显示字符 操作
  • BrokenPipeError: [Errno 32] Broken pipe

    运行Pytorch tutorial代码报错 BrokenPipeError Errno 32 Broken pipe 源代码地址 Training a classifier CIFAR10 该问题的产生是由于windows下多线程的问题
  • QMap遍历(修改)

    方法一 STL风格的遍历器 个人较常用 直观易读 方便修改值 QMap
  • 解决 MDK keil 注册中出现 TOOLS.INI TOOLCHAIN NOT INSTALLED 办法

    MDK Keil 兼容 C51 Keil 我们的电脑有32位系统和64位系统 当keil出现这个错误时 可以按以下办法解决 有两种解决办法 第一种 同时安装MDK Keil 和 C51 Keil 有可能解决此问题 安装必须路径相同 第二种
  • leetcode-合并两个有序链表(详解)

    合并两个有序链表 前言 一 题链接 题意 题思路 题思路图解 题代码 总结 前言 路漫漫及修远兮 一 题链接 题意 将两个升序链表合并为一个新的 升序 链表并返回 新链表是通过拼接给定的两个链表的所有节点组成的 输入 l1 1 2 4 l2