LeetCode 1669. 合并两个链表(C++)

news2024/11/18 0:12:21

思路:
该题思路很简单,对于单向链表,先遍历到指定的右边界的位置b+1,做好标记供连接;
然后对于a-1位置的结点,连接list2,并最后连接后半段的list1

1.题目如下:

给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。

请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。

下图中蓝色边和节点展示了操作后的结果:

在这里插入图片描述

请你返回结果链表的头指针。

示例 1:

在这里插入图片描述

输入:list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]
输出:[0,1,2,1000000,1000001,1000002,5]

解释:我们删除 list1 中下标为 3 和 4 的两个节点,并将 list2 接在该位置。上图中蓝色的边和节点为答案链表。

示例 2:

!](https://img-blog.csdnimg.cn/5c11c8a8acab437497478b9e58366e3d.png)

输入:list1 = [0,1,2,3,4,5,6], a = 2, b = 5, list2 = [1000000,1000001,1000002,1000003,1000004]
输出:[0,1,1000000,1000001,1000002,1000003,1000004,6]

解释:上图中蓝色的边和节点为答案链表。

提示:

3 <= list1.length <= 104
1 <= a <= b < list1.length - 1
1 <= list2.length <= 104

2.代码如下:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
//思路:
/*
    给定了两个坐标,就对链表用指针遍历得到a的前一个结点和b的后一个节点,然后连接
*/
    ListNode* mergeInBetween(ListNode* list1, int a, int b, ListNode* list2) {
        int left=0;
        ListNode *start=list1;
        while(start!=nullptr){
            start=start->next;
            left++;
            //遍历到b+1
            if(left==b+1){
                break;
            }
        }
        left=0;
        ListNode *temp=list1;
        while(temp!=nullptr){
            //遍历到a-1就连接list2
            if(left==a-1){
                temp->next=list2;
                temp=temp->next;
                left++;
            }
            //遍历直到a-1
            else{
                temp=temp->next;
                left++;
            }
            //连接过后,到了list2的末尾节点后再连接b+1
            if(temp->next==nullptr){
                temp->next=start;
                break;
            }

        }
        return list1;
    }
};

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

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

相关文章

ATX agent+UIautomation2 自动化测试介绍

目前ATXUIautomator2 处于自动化界的浪口风尖&#xff0c;现在有幸终于有时间对ATX进行了粗浅的了解 为什么要用ATX ATXUIautomator2的优势&#xff1a; 1.速度吊打appnium&#xff0c;群里面的人这样说的 运行速度快&#xff0c;比Appium运行速度快了好多。&#xff08;用…

分布式架构

目录 一、前言 二、分布式架构的发展历史 三、分布式架构发展的里程碑 四、分布式系统的意义 五、分布式架构的常见概念 六、分布式领域中冯诺依曼模型的变化 七、分布式系统的难点 八、总结 一、前言 ​  我们都知道&#xff0c;当今无论在BAT这样的大公司&#xff…

Install Linux on Windows with WSL2 (使用 WSL2 在 Windows 上安装 Linux)

Install Linux on Windows with WSL2 (使用 WSL2 在 Windows 上安装 Linux)https://learn.microsoft.com/en-us/windows/wsl/ 在 Windows 上运行 Linux - 在 Windows 11 上运行 Ubuntu 20.04 LTS Developers can access the power of both Windows and Linux at the same tim…

实验十三、阻容耦合共射放大电路的频率响应

一、题目 利用 Multism 从以下几个方面研究图1所示的阻容耦合共射放大电路的频率响应。图1阻容耦合共射放大电路图1\,\,阻容耦合共射放大电路图1阻容耦合共射放大电路&#xff08;1&#xff09;设 C1C210μFC_1C_210\,\textrm{μF}C1​C2​10μF&#xff0c;分别测试它们所确定…

6万字电力行业系统解决方案光伏电站综合安防系统解决方案

【版权声明】本资料来源网络&#xff0c;知识分享&#xff0c;仅供个人学习&#xff0c;请勿商用。【侵删致歉】如有侵权请联系小编&#xff0c;将在收到信息后第一时间删除&#xff01;完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 目录 第 一 章背景与需求 1.1行…

2023年收银管理系统排行榜新鲜出炉

随着新零售的模式普及&#xff0c;越来越多的零售店选择了用收银系统代替收银机。因为收银系统不仅具备收银等功能&#xff0c;其实还有各种店铺数据管理功能、经销商信息管理&#xff0c;销售数据分析等许多功能等。所以如果想清晰地知道门店每天盈利情况和库存情况和采购过程…

这些小众却足够惊艳的素材库,你知道吗?

推荐几个我经常使用的网站&#xff0c;绝对够惊艳。 1、菜鸟图库&#xff08;免费设计素材&#xff09; https://www.sucai999.com/?vNTYxMjky 这是一个为新手设计师提供免费素材的设计网站&#xff0c;站内有超多平面模板、海报、UI设计、电商设计等相关素材&#xff0c;质…

JS设计模式

文章目录1 什么是设计模式&#xff1f;2 发布-订阅模式2.1 DOM事件2.2 基于Broadcast Channel实现跨页面通信2.3 基于localStorage实现跨页面通信2.4 使用 Vue 的 EventBus 进行跨组件通信2.4 使用 React 的 EventEmitter 进行跨组件通信3 装饰器模式3.1 React 高阶组件 HOC3.2…

MySql图形化界面工具--DataGrip安装和使用

一、下载安装 1、官网下载安装包&#xff0c;双击开始安装 2、点击next&#xff0c;一步一步的完成安装 3、选择DataGrip的安装目录&#xff0c;然后选择下一步 4、下一步&#xff0c;执行安装 二、使用 1、添加数据源 配置以及驱动jar包下载完毕之后&#xff0c;…

Pod基本概念与Pod应用生命周期

Pod是一个逻辑抽象概念&#xff0c;kubernetes创建和管理的最小单元&#xff0c;一个Pod由一个容器或多个容器组成。特点&#xff1a;一个Pod可以理解为是一个应用实例&#xff0c;提供服务Pod中容器始终部署在一个Node上Pod中容器共享网络、存储资源Pod主要用法&#xff1a;运…

大件传输的9种方法

不知道你有没有试过用电子邮件进行大文件传输&#xff0c;由于文件大小的限制&#xff0c;往往会发送失败。同时&#xff0c;一些文件共享服务对传输的文件有大小限制&#xff0c;使得你无法与朋友分享电影片段或向客户展示你的工作样本。还有一些要求你注册一个账户&#xff0…

【JVM基础内容速查表】JVM基础知识 默认参数 GC命令 工具使用 JVM参数设置、说明、使用方法、注意事项等(持续更新)

目录一、JVM前置知识1. -X、-XX含义2. JVM参数值的类型和设置方式3. 查看GC时用到的命令和JVM参数4. 查看JVM默认参数二、垃圾收集器选择-XX:UseSerialGC-XX:UseParallelGC-XX:UseParallelOldGC-XX:UseParNewGC-XX:UseConcMarkSweepGC-XX:UseG1GC三、垃圾收集器特有参数1. ParN…

pyinstaller打包遇到的问题

1、ModuleNotFoundError: No module named ‘scipy.spatial.transform_rotaion_groups’ 解决办法&#xff1a;–hidden-import scipy.spatial.transform._rotation_groups 2、FileNotFoundError:[Errno 2] No such file or directory:‘C:\Users\Gw0021\AppData\Local\Temp\_M…

leaflet 选择一个marker,点击后设置其为中心点(070)

第070个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中引用geojson文件,显示marker,点击某个marker后,设置其为中心点,并panTo到中心点。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共81行)相…

【数据库】MySQL 索引视图详解

目录 MySQL索引视图 视图 一&#xff0c;什么是视图 二&#xff0c;为什么需要视图 三&#xff0c;视图的作用和优点 四&#xff0c;创建视图 案例&#xff1a; 五&#xff0c;视图使用规则 六&#xff0c; 修改视图 1&#xff0c;修改列名 2&#xff0c;创建复杂视图…

把盏言欢,款款而谈,当WorkPlus接入了ChatGPT机器人

ChatGPT到底有多火&#xff1f; “谷歌AI聊天机器人出错&#xff0c;市值一夜蒸发7172亿”&#xff1b;“百度类ChatGPT项目‘文心一言’或将直接接入百度搜索”&#xff1b;“阿里确认正研发类ChatGPT产品&#xff0c;目前处于内测阶段”&#xff1b;“网易有道将推出教育场景…

电脑技巧:分享六个小众且非常实用的工具

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️荣誉&#xff1a; CSDN博客专家、数据库优质创作者&#x1f3c6;&…

黑马】后台管理-路由懒加载

当打包构建项目时&#xff0c; JavaScript 包会变得非常大&#xff0c;影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块&#xff0c;然后当路由被访问的时候才加载对应组件&#xff0c;这样就更加高效了。具体需要 3 步&#xff1a;① 安装 babel/plugin-synt…

【Big Data】Hadoop--MapReduce经典题型实战(单词统计+成绩排序+文档倒插序列)

&#x1f34a;本文使用了3个经典案例进行MapReduce实战 &#x1f34a;参考官方源码&#xff0c;代码风格较优雅 &#x1f34a;解析详细 一、Introduction MapReduce是一个分布式运算程序的编程框架&#xff0c;核心功能是将用户写的业务逻辑代码和自身默认代码整合成一个完整的…

震源机制沙滩球(focal mechanism beach ball)绘制之傻瓜式教程

目录 1. 断层的定义 2. 绘制流程 3. 更多示例 沙滩球的含义可阅读&#xff1a;震源机制(Focal Mechanisms)之沙滩球(Beach Ball)_ddd...e_bug的博客-CSDN博客 1. 断层的定义&#xff08;&#xff09; 走向&#xff08;strike&#xff09;&#xff1a;正北方顺时针旋转到走向…