leetcode:21合并两个有序连表——slist

2023-05-16

思路分析

链表:头节点为空,每个节点有一个指针,指向下一个节点的地址
俩链表节点之间比较,用遍历``for,因为是list,可以直接通过迭代器(指针)判断俩节点是否为NULL决定是否遍历结束
代码框架:
开辟存储数据的空间:

  ListNode* dummyHead = new ListNode(-1);//链表空间
  ListNode* p = dummyHead;//迭代器
  ListNode* l1p = list1;//list1迭代器
  ListNode* l2p = list2;//list2迭代器

对链表节点中的元素进行比较,需要遍历两个链表,这里用while

while(l1p!=NULL&&l2p!=NULL){}

元素之间比较有两种情况a<b和a>b,if

  if(list1p->val < list2p->val){
      p->next = list1p;//第一个节点(val为空,指针指向下一个节点)
      list1p = list1p->next;
  }
  else{
      p->next = list2p;
      list2p = list2p->next;
  }
  p = p->next;

俩list的长度可能不同,长的元素放在最后面

if(l1p != NULL)//将list的所有元素放在最后面
    p->next = list1p;
else//将list2的所有元素放在最后面
    p->next = list2p;

整体代码

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {

        ListNode* dummyHead = new ListNode(-1);
        ListNode* p = dummyHead;
        ListNode* l1p = l1;
        ListNode* l2p = l2;
        while(l1p != NULL && l2p != NULL){
            if(l1p->val < l2p->val){
                p->next = l1p;
                l1p = l1p->next;
            }
            else{
                p->next = l2p;
                l2p = l2p->next;
            }

            p = p->next;
        }

        if(l1p != NULL)
            p->next = l1p;
        else
            p->next = l2p;

        ListNode* ret = dummyHead->next;
        dummyHead->next = NULL;
        delete dummyHead;

        return ret;
    }
};

总结

1.通过遍历迭代器指针代替常规的遍历元素
2.每个list都有一个iterator,可以通过iterator实现元素的轻松遍历
3.slist第一个val为空,第二个元素指向真实的第一个节点

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

leetcode:21合并两个有序连表——slist 的相关文章

  • 树莓派frp内网穿透

    树莓派 43 frp内网穿透 一 frp二 frp作用三 安装与配置1 服务器端2 客户端 xff08 树莓派 xff09 一 frp frp 是一个高性能的反向代理应用 xff0c 支持 tcp udp http https 协议 二 f
  • FreeRTOS任务创建

    任务创建 操作 一 硬件初始化 span class token keyword static span span class token keyword void span span class token function Hardwa
  • vue2的点击事件简单搜索案例

    前端小白新人一枚 有不对请指正哦 写这篇文章的原因 xff1a 1 我使用了 computed 和 watch分别实现对列表的过滤筛选 xff0c 发现这两个方法均是用户输入自动过滤 xff0c 于是我想使用 点击事件过滤 xff0c 以下
  • QML嵌入视频遇到的一些问题汇总

    首先放上demo import QtQuick 2 6 import QtQuick Window 2 2 import QtMultimedia 5 8 Window visible true width 640 height 480 t
  • Downie 4 4.6.16 MAC上最新最好用的一款视频下载工具

    Downie for Mac 简介 Downie是Mac下一个简单的下载管理器 xff0c 可以让您快速将不同的视频网站上的视频下载并保存到电脑磁盘里然后使用您的默认媒体播放器观看它们 Downie 4 下载 Downie 4 for Ma
  • AIGPT中文版(无需魔法,直接使用)不愧是生活工作的好帮手。

    AIGPT AIGPT是一款非常强大的人工智能技术的语言处理工具软件 xff0c 它具有 AI绘画 功能 AI写作 写论文 写代码 哲学探讨 创作等功能 xff0c 可以说是生活和工作中的好帮手 我们都知道使用ChatGPT是需要账号以及使
  • Tomcat10版本避坑

    Tomcat版本选择 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器 xff0c 属于轻量级应用服务器 xff0c 在中小型系统和 并发访问用户不是很多的场合下被普遍使用 xff0c 是开发和调试JSP 程序的首选 并且To
  • 阿里云ECS服务器ubuntu18图形界面安装

    文章目录 前言一 配置阿里镜像源二 安装图形界面三 VNC远程连接总结 前言 文章中的图形界面基于阿里云ECS服务器远程连接中的VNC连接 xff0c 使用时会体验到明显的延迟 xff0c 介意可以使用Xshell 43 Xmanger 4
  • 实验二 HDFS实验操作

    一 实验目的 理解HDFS在Hadoop体系结构中的角色熟练使用HDFS操作常用的Shell命令熟悉HDFS操作常用的Java API 二 实验平台 操作系统 xff1a ubuntu18Hadoop版本 xff1a 3 2 2JDK版本
  • Java程序部署到Linux环境上运行

    文章目录 前言一 Java环境安装二 Eclipse编译java程序并导出jar包三 Linux环境上运行jar包 前言 想要在Linux上运行java程序 xff0c 可以将java程序编译成功后导出成jar包 xff0c 然后在Linu
  • python疫情大数据可视化

    一 实验目的 通过本次实验掌握数据获取 数据清洗与存储和数据可视化工具的基本使用方法 二 实验平台 操作系统 xff1a window10 python版本 xff1a 3 8 IDE xff1a pycharm 可视化工具 xff1a e
  • MybatisPlus-乐观锁&悲观锁

    乐观锁 xff1a 每次不加锁而是假设没有冲突而去完成某项操作 xff0c 如果失败就重试 xff0c 直到成功为止 悲观锁 xff1a synchronized是独占锁即悲观锁 xff0c 会导致其他所有需要锁的线程挂起 xff0c 等待
  • ConcurrentHashMap -1.8 源码解析

    ConcurrentHashMap 1 8 源码解析 加锁机制 在JDK1 7之前 xff0c ConcurrentHashMap是通过分段锁机制来实现的 xff0c 所以其最大并发度受Segment的个数限制 因此 xff0c 在JDK1
  • Redis五种基本数据类型

    五种基本数据类型 redis无论什么数据类型 xff0c 在数据库中都是以key value形式保存 xff0c 并且所有的key 键 都是字符串 xff0c 所以讨论基础数据结构都是讨论的value值的数据类型 主要包括常见的5种数据类型
  • 直线的斜率

    斜率 xff0c 亦称 34 角系数 34 xff0c 表示一条直线相对于横轴的倾斜程度 一条直线与某平面直角坐标系横轴正半轴方向的夹角的正切值即该直线相对于该坐标系的斜率 如果直线与x轴垂直 xff0c 直角的正切值无穷大 xff0c 故
  • ElasticSearch--整合SpringBoot

    引入依赖 span class token tag span class token tag span class token punctuation lt span dependency span span class token pun
  • ElasticSearch--聚合查询

    聚合查询 简介 聚合 xff1a 英文为Aggregation xff0c 是es除搜索功能外提供的针对es数据做统计分析的功能 聚合有助于根据搜索查询提供聚合数据 聚合查询是数据库中重要的功能特性 xff0c ES作为搜索引擎兼数据库 x
  • CopyOnWriteArrayList简介

    1 简介 CopyOnWriteArrayList 是 ArrayList 的线程安全版本 就是在进行写操作的时候会 copy 原数组 xff0c 然后写完将指针指向新的数组 xff0c 是一种读写分离的思想 xff0c 可以并发的读 xf
  • PX4平台(V3)+T8S遥控器校准

    1 PX4与接收机的连接 首先 xff0c 将遥控器接收机的信号线与PX4的RC IN信号相连 xff08 注意正负极 xff09 xff0c 在主控上电之后 xff0c 观察接收机信号指示灯的颜色 xff1a 1 PWM 信号工作模式 接
  • PX4编写CAN应用程序控制底盘运动

    目录 一 在PX4平台中添加自己的应用程序 1 建立应用程序 Hello can c文件 xff1a Kconfig文件 xff1a CMakeLists txt文件 xff1a 2 编译应用程序及固件 3 测试应用 xff08 硬件 xf

随机推荐

  • PyCharm2021安装教程

    Windows安装PyCharm2021教程 一 下载安装PyCharm二 安装Python三 配置PyCharm环境四 使用PyCharm五 PyCharm简介 一 下载安装PyCharm 1 进入官网PyCharm的下载地址 xff1a
  • ROS学习(二)创建功能包

    在上一讲中我们已经创建好工作空间catkin ws xff0c 我们要在其src文件中创建功能包 文章目录 一 创建功能包二 编译功能包三 查看功能包的依赖3 1一阶依赖3 2间接依赖 四 定制功能包自定义package xml文件4 1
  • 双冒号(::)和单冒号(:)在 C++ 中的含义和作用

    目录 一 双冒号 xff08 xff09 在C 43 43 中的含义和作用 二 单冒号 xff08 xff09 在C 43 43 中的含义和作用 双冒号 xff08 xff09 和单冒号 xff08 xff09 在 C 43 43 中都是特
  • 【OpenCV教程】OpenCV中的数据类型

    文章目录 1 CV 8U2 CV 8S3 CV 16U4 CV 16S5 CV 16F6 CV 32S7 CV 32F8 CV 64F9 一图流 1 CV 8U CV 8U 占8位的unsigned CV 8UC n 占8位的unsigne
  • 【ROS教程】安装ROS全流程及可能遇到的问题

    文章目录 1 配置Softerware amp Updates2 添加软件源3 设置key4 更新并安装4 1 更新4 2 安装 ros noetic desktop full 4 2 1 安装aptitude4 2 2 安装ROS软件包
  • 【unix】unix环境高级编程

    文章目录 1 UNIX基础知识1 基本知识2 文件和目录3 输入和输出4 程序和进程5 出错处理6 用户标识7 信号8 时间9 系统调用和库函数 标准化和实现1 标准化 ISO C POSIX Single UNIX Specificati
  • 在 Ubuntu 中安装 VSCode

    在 Ubuntu 中安装 VSCode 如果想要通过 ubuntu 安装 vscode 有三种方式 xff0c 可以通过应用中心下载 xff0c 也可以通过安装包下载 xff0c 以及指令安装 方式一 xff1a 首先在 ubuntu 桌面
  • 常用命名规范分类:匈牙利命名法、下划线命名法、驼峰命名法、帕斯卡命名法

    目录 1 匈牙利命名法 xff08 Hungarian xff09 变量属性 2 下划线命名法 xff08 UnderScoreCase xff09 3 驼峰命名法 xff08 小驼峰命名法 xff09 xff08 Camel xff09
  • keil5无法跳转自己要查询的函数

    之前用keil5的时候想要查询函数的意思 xff0c 去跳转结果给我报错 xff0c 出现这个报错信息 原因是编译的时候没有勾选这个按钮 xff1a 勾选上之后重新编译就不会报错了
  • Linux 安装 Node.js | NPM

    超级简单 yum y install nodejs 验证安装 安装node js 会自动一起安装npm 注意 python V 是大写字母V 错写为小写会进入python的编辑模式 执行exit 退出 执行node 启动node终端 两次C
  • 树莓派连接不上WIFi,VNC失效,SSH失效

    笔记 xff1a 树莓派连接不上wifi的解决方法 xff1a 1 xff0c usb连接手机 xff0c 手机设置中搜索 xff0c usb共享网络 xff0c 然后代开usb连接网络 2 xff0c 右键树莓派wifi标志符 xff0c
  • C++中类的运算符重载教程(一),内附完整代码与解析

    目录 xff1a 一 xff1a 加号运算符重载 对 43 重载函数的理解 xff1a xff08 个人理解 xff0c 仅供参考 xff09 二 xff1a 左移运算符的重载 对 lt lt 重载函数的理解 xff08 个人理解 xff0
  • 关于ros中pcl_ros和ros链接问题Makefile:140的一种解决方案

    本人在ros学习pcl和slam过程中 xff0c 使用catkin make进行编译 xff0c 最终只报了错误Makefile 140和make j4 l4错误 xff0c 诸如此类错误 xff0c 多为链接过程出现问题 坑多日 xff
  • rosbag播放过程ctrl+z暂停后继续播放的方法

    rviz 43 rosbag播放暂停与继续播放 rosbag播放暂停的方式可以在rosbag运行窗口 space按键进行控制 该方法用于进程管理的学习扩展 问题描述 xff1a rosbag包播放过程ctrl 43 z暂停播放恢复播放方法
  • github上docker镜像创建容器

    docker介绍 三个概念 1 镜像 xff1a 类似于模版 xff0c 在没有添加实例化前不能使用 2 容器 xff1a 镜像实例化 3 docker xff1a 放容器的一个载体 总结 xff1a docker就像一艘船 xff0c 上
  • vi/vim基本命令

    目录 打开创建文档模式介绍显示行号增删改查光标移动文档操作 打开创建文档 span class token function vim span hello txt 打开已存在hello txt文档或者创建一个不存在的hello txt文档
  • 关于leetcode刷题详细介绍

    虽然刷题一直饱受诟病 xff0c 不过不可否认刷题确实能锻炼我们的编程能力 xff0c 相信每个认真刷题的人都会有体会 现在提供在线编程评测的平台有很多 xff0c 比较有名的有 hihocoder xff0c LintCode xff0c
  • leetcode:13罗马数字转整数c++

    思路分析 两种情况 1 不同的罗马数字都是从左到右依次相加 2 不同的就是末尾数是4和9的情况 xff0c 也就是IV VIV xff08 if xff09 代码框架 整体过程 从题目中字符和数字的对应关系 xff0c 不难想到数据结构un
  • leetcode:20有效的括号——stack

    思路分析 题目匹配的情况有两中 xff1a 和 xff08 xff09 匹配成功的思路是每个 或者其他右包围结构都是和最近的 或者其他左包围结构匹配 最近 匹配的思想应该使用stack结构对数据进行操作 代码框架 1 遍历整个string
  • leetcode:21合并两个有序连表——slist

    思路分析 链表 xff1a 头节点为空 xff0c 每个节点有一个指针 xff0c 指向下一个节点的地址 俩链表节点之间比较 xff0c 用遍历 96 96 for xff0c 因为是list xff0c 可以直接通过迭代器 xff08 指