相交链表 -------------应用

news2024/9/24 16:58:36

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

图示两个链表在节点 c1 开始相交

题目数据 保证 整个链式结构中不存在环。

注意,函数返回结果后,链表必须 保持其原始结构 。

如果A、B链表长度一样的,设置两个链表pl、ps(长的那一个和短的那一个),那我们让他们同时走,当ps与pl相遇(ps == pl)返回对应节点即可。

若A、B链表两个长度不一样,一长一短,我们可以取两个列表长度的差值(len),让长的那个列表往下走len次,(这样短的和长的就能相遇),再和短的一起走直到相遇。

具体步骤:

1.判断哪个链表更长:

设置两个链表,pl(长链表),ps(短链表),分别存放headA和headB,

1.1遍历获取两个链表的长度lenA、lenB:while循环,循环后pl与ps均为null,所以要重新赋值为headA和headB。

1.2.求两个链表长度的差值,若lenA-lenB<0,说明headB更长,将pl = headB,ps = headA.

2.让长的那个链表先走len步:

通过while循环让pl先走len步

3.pl与ps同时走直到相遇:

while循环让两个一直遍历下去。

具体代码如下:

 //.判断两个链表哪个更长
         ListNode pl =  headA;
         ListNode ps =  headB;
           int  LenB = 0;
         int lenA = 0;
         int len = 0;
         while(pl!=null)
         {
            lenA++;    
            pl = pl.next;
             
              }
    
            while(ps!=null)
            {
                LenB++;
                ps = ps.next;
                
            }
             pl = headA;
             ps = headB;
            //求差值
            len = lenA-LenB;
            if(len<0)
            {
                pl = headB;
                ps = headA;
                len = LenB-lenA;
              
            }
              //3.让最长的链表先走len步
            while(len!=0)
            {
                pl= pl.next;
                len--;
            }
            
            //4.两个同时走,直到相遇
            while(pl!=ps)
            {
                pl = pl.next;
                ps = ps.next;
            }
             if(pl == null)
             {
                return null;
             }
             return pl;
}

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

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

相关文章

2024上海工博会,正运动机器视觉运动控制一体机应用预览(三)

■展会名称&#xff1a; 第二十四届中国国际工业博览会&#xff08;以下简称“上海工博会”&#xff09; ■展会日期 2024年9月24日–28日 ■展馆地点 中国国家会展中心&#xff08;上海&#xff09; ■展位号 6.1H-E261 本次上海工博会&#xff0c;正运动技术将携高性…

微信小程序开发项目

微信小程序是一种轻量级的应用程序&#xff0c;无需下载即可使用&#xff0c;并且具有即用即走的特点。这种新型的应用程序正在改变人们的使用习惯&#xff0c;使得人们可以更加方便快捷地获取信息和服务。本文将详细介绍微信小程序的开发过程&#xff0c;包括开发前的准备、开…

9.3 Linux_文件I/O_相关函数

打开与关闭 1、打开文件 int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);返回值&#xff1a;成功返回文件描述符&#xff0c;失败返回EOF pathname&#xff1a;文件路径 flags&#xff1a;标志&#xff0c;其中O_RDO…

CUDA安装教程+显卡驱动安装

CUDA安装教程显卡驱动安装 新的ubuntu系统&#xff0c;需要重新安装显卡驱动&#xff0c;以及cuda&#xff0c;记录以下坑点&#xff1a; 先安装显卡 nvidia-smi输入后出现 首先知道自己的GPU型号&#xff0c;如RTX 4090 这里下载&#xff1a;https://www.nvidia.com/Down…

自动化学习2:pytest的高级用法(mark标记/fixture/hook)

一.mark的用法 概念&#xff1a;Pytest提供的mark标记&#xff0c;允许我们标记测试函数&#xff0c;测试类和整个模块。通过不同的标记实现不同的运行策略&#xff0c;如标记冒烟测试用例。 1.注册标记 可以在pytest.ini文件注册自定义标记 除了自己注册的标记外&#xff0…

网安新声 | 黎巴嫩BP机爆炸事件带来的安全新挑战与反思

网安加社区【网安新声】栏目&#xff0c;汇聚网络安全领域的权威专家与资深学者&#xff0c;紧跟当下热点安全事件、剖析前沿技术动态及政策导向&#xff0c;以专业视野和前瞻洞察&#xff0c;引领行业共同探讨并应对新挑战的策略与可行路径。 9月17日&#xff0c;黎巴嫩境内发…

一文学会 Java 8 的Predicates

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 在这份详细的指南中&#xff0c;您将了解 Java Predicates&#xff0c;这是 Java 8 中一个新颖且有用的特性。本文解释了 Java Predicates 是什么以及如何在各种情况下使用它们。 在这份详尽的指南中…

828华为云征文|Flexus X实例安装H5ai目录列表程序

828华为云征文&#xff5c;Flexus X实例安装H5ai目录列表程序 引言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 主要使用场景 二、购买Flexus云服务器X实例2.1 购买规格参考2.2 查看Flexus云服务器X实例状态 三、远程连接Flexus云服务器X实例3.1 重置密码3.2 本…

sleuth(micrometer)+zipkin 实现链路追踪

目录 sleuth 介绍 相关术语 Trace Span Annotation 使用 依赖 参考 Zipkin 介绍 使用 下载最新版并使用 客户端集成 参考 sleuth 介绍 Spring Cloud Sleuth 能够跟踪您的请求和消息&#xff0c;以便您可以将该通信与相应的日志条目相关联。 您还可以将跟踪信息…

saltstack高级用法

一、saltstack的高级用法 一、job管理 1、job简介 Jid&#xff1a;job id&#xff0c;格式为%Y%m%d%H%M%S%fmaster在下发指令消息时&#xff0c;会附带上产生的Jid&#xff0c;minion在接收到指令开始执行时&#xff0c;会在本地的cachedir&#xff08;默认是/var/cache/salt/…

git add成功后忘记commit的文件丢了?

本文目标&#xff1a;开发人员&#xff0c;在了解git fsck命令用法的条件下&#xff0c;进行git add成功但由于误操作导致丢失的文件找回&#xff0c;达到找回丢失文件的程度。 文章目录 1 痛点2 解决方案3 总结/练习 1 痛点 开发过程中&#xff0c;分支太多&#xff08;基线分…

网络安全等级保护 | 规范企业网络系统安全使用 | 天锐股份助力等保制度落地

在当今数字化高速发展的时代&#xff0c;网络安全对于企业的重要性日益凸显。而近年来&#xff0c;数据泄露、网络攻击等安全事件频发&#xff0c;给企业和个人带来了前所未有的挑战。在这一背景下&#xff0c;网络安全等级保护制度&#xff08;简称“等保”&#xff09;作为国…

论文 | Reframing Instructional Prompts to GPTk’s Language

作者&#xff1a;Swaroop Mishra, Daniel Khashabi, Chitta Baral, Yejin Choi, Hannaneh Hajishirzi 论文摘要&#xff1a;语言模型 (LM) 更容易遵循哪些类型的指令提示&#xff1f; 我们通过进行广泛的实证分析来研究这个问题&#xff0c;这些分析阐明了成功指令提示的重要特…

gateway--网关

在微服务架构中&#xff0c;Gateway&#xff08;网关&#xff09;是一个至关重要的组件&#xff0c;它扮演着多种关键角色&#xff0c;包括路由、负载均衡、安全控制、监控和日志记录等。 Gateway网关的作用 统一访问入口&#xff1a; Gateway作为微服务的统一入口&#xff0c…

【Unity保龄球项目】的实现逻辑以及代码解释

1.BaoLQManager.cs 这个脚本实现了基本的保龄球游戏逻辑&#xff0c;包括扔球功能。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class BaoLQManager : MonoBehaviour {// 业务逻辑1&#xff1a;把保龄球扔出去// 业务逻辑2&am…

react hooks--useRef

基本用法 在类组件中获取一个dom元素实例&#xff0c;可以通过React.CreateRef或者回调函数的方式去获取。语法&#xff1a;const refContainer useRef(initialValue);使用场景&#xff1a;在 React 中进行 DOM 操作时&#xff0c;用来获取 DOM作用&#xff1a;返回一个带有 …

TensorRT | 在多个GPU中指定推理设备

说实话&#xff0c;之前我在笔记本上都一直都是只有一块N卡&#xff0c;所以没有过多关注过这个问题。然而昨天有个人问我&#xff0c;TensorRT怎么在多个GPU中指定模型推理GPU设备&#xff1f;我查了一下&#xff0c;发现官方有几个不同的解决方案&#xff0c;个人总结了一下&…

面经 | webpack

webpack webpackloader基本语法rules自定义loader 你可以写哪些loader&#xff1f;常见loader pluginwebpack生命周期 [参考](https://blog.csdn.net/qq_17335549/article/details/137561075)常见plugin webpack 一个打包工具&#xff0c;就和npm是一个包管理工具差不多。一般…

聚观早报 | 小米新车规划曝光;北京汽车官宣更换标志

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 9月24日消息 小米新车规划曝光 北京汽车官宣更换标志 转转全资收购红布林 全新岚图梦想家乾崑版上市 微软拟推出…

SpringCloud各依赖版本选择、核心功能与组件、创建项目(注意事项、依赖)

目录 1. 各依赖版本选择2. 核心功能与组件3. 创建项目3.1 注意事项3.2 依赖 1. 各依赖版本选择 SpringCloud: 2023.0.1SpringBoot: 3.2.4。参考Spring Cloud Train Reference Documentation选择版本 SpringCloud Alibaba: 2023.0.1.0*: 参考Spring Cloud Alibaba选择版本。同时…