相交链表(双指针)

160. 相交链表 - 力扣(LeetCode)

题目描述

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

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

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

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

自定义评测:

评测系统 的输入如下(你设计的程序 不适用 此输入):

  • intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0
  • listA - 第一个链表
  • listB - 第二个链表
  • skipA - 在 listA 中(从头节点开始)跳到交叉节点的节点数
  • skipB - 在 listB 中(从头节点开始)跳到交叉节点的节点数

评测系统将根据这些输入创建链式数据结构,并将两个头节点 headA 和 headB 传递给你的程序。如果程序能够正确返回相交节点,那么你的解决方案将被 视作正确答案 。

样例输入

示例 1:

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3
输出:Intersected at '8'
解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。
从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,6,1,8,4,5]。
在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。
— 请注意相交节点的值不为 1,因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说,它们在内存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。

 

示例 2:

输入:intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Intersected at '2'
解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。
从各自的表头开始算起,链表 A 为 [1,9,1,2,4],链表 B 为 [3,2,4]。
在 A 中,相交节点前有 3 个节点;在 B 中,相交节点前有 1 个节点。

示例 3:

输入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2
输出:null
解释:从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。
由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。
这两个链表不相交,因此返回 null 。

 

提示:

  • listA 中节点数目为 m
  • listB 中节点数目为 n
  • 1 <= m, n <= 3 * 104
  • 1 <= Node.val <= 105
  • 0 <= skipA <= m
  • 0 <= skipB <= n
  • 如果 listA 和 listB 没有交点,intersectVal 为 0
  • 如果 listA 和 listB 有交点,intersectVal == listA[skipA] == listB[skipB]

题解

我们设:

  • 链表headA的长度为n1,链表A的长度为n2
  • 两个链表的相交长度为c,链表headA不相交的部分长度为a,链表headB不相交的部分长度为b
  • 则n1=a+c,n2=b+c

假设两个链表相交(c≠0),且n1<n2,用pa和pb两个指针分别指向两个链表并同时向后遍历

  • 如果a=b,则两个指针会同时到达相交节点
  • 如果 a≠b,则指针 pa会遍历完链表 headA,指针 pb 会遍历完链表 headB,两个指针不会同时到达链表的尾节点

    然后指针 pa移到链表 headB的头节点,指针 pb 移到链表 headA的头节点,然后两个指针继续移动
    指针 pa移动了 a+c+b 次、指针 pb 移动了 b+c+a次之后,两个指针会同时到达两个链表相交的节点,该节点也是两个指针第一次同时指向的节点,此时返回相交的节点。

其实,在上述过程中,利用的等式是a+c+b=a+b+c,而如果c=0,我们会发现其实也就是两个链表不相交的情况,上述解法同样满足

故整体思路为:

  • 指针pa和指针pb同时向后遍历,直到pa的地址和pb的地址相同为止
  • 若遍历过程中有任何一方先到达nullptr(链表末尾),就更换指向,从另一个链表开始处重新遍历
  • 最终一定会有pa==pb,此时的pa便是相交节点

 

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode* pa=headA,*pb=headB;
        while(pa!=pb)
        {
            if(pa) pa=pa->next;
            else pa=headB;
            if(pb) pb=pb->next;
            else pb=headA;
        }
        return pa;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

#猫咪养护机模块功能分析

1.供电部分 AC转DC模块 220V交流转12V直流 系统的整体供电模块&#xff0c;可以直接接入220V交流电&#xff0c;并且输出12V直流电&#xff0c;12V直流电一方面供电给TB6600电机驱动板&#xff0c;一方面供电给PTC加热模块&#xff0c;还有一方面接入DCDC直流12转直流5V模块供…

定制Pro版研究区底图,为你的SCI论文增色!

研究区图&#xff08;Research Area Map&#xff09;是一种用于可视化学术研究内容所处地理位置的图表。论文中的研究区图不仅需要准确传达地理和地质数据&#xff0c;还应当在视觉上具有吸引力&#xff0c;以便更好地引起读者的兴趣。经常在高影响力的SCI论文中看到一些非常美…

半导体成品测试详述(Final Test,简称FT)

00、FT的一些概念 半导体成品测试&#xff08;Final Test&#xff0c;简称FT&#xff09;是在芯片封装完成后进行的最后一个测试阶段&#xff0c;其目的是确保芯片在实际应用中的性能和可靠性。FT测试可以包括环境测试、老化测试和应用特定的性能测试。 FT测试主要是为了解决各…

Stable Diffusion AI绘画宝典:从新手到高手,一图胜千言!

在这个数字化时代的浪潮中&#xff0c;人工智能技术以其惊人的创造力和创新性席卷全球。党的二十大报告把“实施科教兴国战略&#xff0c;强化现代化建设人才支撑”作为战略举措进行系统阐述&#xff0c;彰显我国不断发展新动能、新优势的决心和气魄。 Stable Diffusion是一款…

淘宝天猫玩具销售数据可视化

目录 背景描述数据说明数据来源1. 导入模块2. 乐高淘宝数据分析及其可视化2.1 乐高淘宝数据概览2.2 乐高淘宝数据处理2.3 乐高销量排名淘宝店铺Top502.4 乐高产地数量排名top502.5 天猫乐高价格分布2.6 不同价格区间的销售额整体表现分布2.7 淘宝乐高标题词云图 3. 乐高天猫旗舰…

06-java面向对象(中)封装与继承

6.1 封装 6.1.1 封装概述 1、为什么需要封装&#xff1f; 适当的封装可以让代码更容易理解与维护&#xff0c;也加强了代码的安全性。 通俗的讲&#xff0c;把该隐藏的隐藏起来&#xff0c;该暴露的暴露出来。这就是封装性的设计思想。 随着我们系统越来越复杂&#xff0c;…

SQL数据库管理开发工具:DataGrip 2024(win/mac)激活版

JetBrains DataGrip是一款专业的SQL数据库管理开发工具。DataGrip允许您以不同的方式发展模式以及执行信息查询&#xff0c;并提供服务本地文化历史问题记录&#xff0c;可以提高跟踪您的所有学生活动并保护如果您不选择丢失您的工作。DataGrip允许您通过建立相应的操作按名称就…

mPEG-NCO,mPEG-isocyanate常被用于修饰蛋白质、肽或其他具有这些基团的材料组

【试剂详情】 英文名称 mPEG-NCO&#xff0c;mPEG-isocyanate 中文名称 聚乙二醇单甲醚异氰酸酯&#xff0c; 甲氧基-聚乙二醇-异氰酸酯 外观性状 由分子量决定&#xff0c;粘性液体或固体粉末 分子量 400&#xff0c;1k&#xff0c;2k&#xff0c;3.4k&#xff0c;5k&a…

vscode格式化找不到使用...格式化文档

问题记录&#xff1a; 修改一年前的一个项目的时候&#xff0c;忽然发现vscode没有办法对项目进行合理的格式化&#xff0c;但凡保存&#xff0c;因为格式化问题几百个错刷屏。 问题排查&#xff1a; 开始以为是setting.json文件被我修改乱了&#xff0c;复制过来最开始保存的…

HackMyVM-Pwned

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 dirsearch wfuzz FTP ssh连接 提权 get user 系统信息收集 横向渗透 信息收集 arp ┌─[rootparrot]─[~/HackMyVM] └──╼ #arp-scan -l Interface: enp0s3, type: EN10MB, MAC: 08:00:27:16:3d:f8, …

草柴返利APP如何查询领取天猫超市优惠券拿天猫超市购物返利?

草柴返利APP是一款购物省钱工具。通过草柴APP可查询到淘宝、天猫、京东隐藏的大额优惠券及购物返利。今天分享&#xff0c;如何使用草柴返利APP查询领取天猫超市商品的优惠券拿天猫超市购物返利。购物前先领券&#xff0c;确认收货后再拿返利&#xff1b; 草柴返利APP如何查询领…

带你读论文第十期:上海人工智能实验室、ICCVW最佳论文奖,钟怡然博士分享...

Datawhale论文 来源&#xff1a;WhalePaper&#xff0c;负责人&#xff1a;芙蕖 WhalePaper简介 由Datawhale团队成员发起&#xff0c;对目前学术论文中比较成熟的 Topic 和开源方案进行分享&#xff0c;通过一起阅读、分享论文学习的方式帮助大家更好地“高效全面自律”学习&…

读天才与算法:人脑与AI的数学思维笔记01_洛夫莱斯测试

1. 创造力 1.1. 创造力是一种原动力&#xff0c;它驱使人们产生新的、令人惊讶的、有价值的想法&#xff0c;并积极地将这些想法付诸实践 1.2. 创造出在表面上看似新的东西相对容易 1.3. 在遇到偶然间的创造性行为时&#xff0c;都会表现得异…

多维时序 | Matlab实现TCN-LSTM时间卷积长短期记忆神经网络多变量时间序列预测

多维时序 | Matlab实现TCN-LSTM时间卷积长短期记忆神经网络多变量时间序列预测 目录 多维时序 | Matlab实现TCN-LSTM时间卷积长短期记忆神经网络多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【Matlab实现TCN-LSTM时间卷积长短期记忆神经网络多变量…

10分钟学会提示词工程

以下是我制作ppt的截图,更多内容可以下载对应ppt自己学习哈~

zabbix解析以及安装

目录 目录 zabbix 是什么&#xff1f; 监控主要功能 zabbix 监控原理&#xff1a; zabbix运行机制 Zabbix的监控方式 Zabbix监控系统监控对象 Zabbix的优缺点 Zabbix的缺点 zabbix主要特点 zabbix 监控部署在系统中&#xff0c;包含常见的五个程序: 监控的架构 3.maste…

WebApis知识总结以及案例(续3)

综合案例 小兔鲜页面注册 分析业务模块 发送验证码模块 用户点击之后&#xff0c;显示05 秒后重新获取 时间到了&#xff0c;自动改为重新获取 //1.发送短信验证码模块const codedocument.querySelector(.code)let flagtrue//通过一个变量来控制 节流阀 // 1.1 点击事件co…

布局香港之零售中小企篇 | 传承之味,迈向数字化经营的时代

随着内地与香港两地经贸合作日渐紧密&#xff0c;越来越多内地消费品牌将目光投向香港这片充满机遇的热土&#xff0c;纷纷入驻香港市场。「北店南下」蔚然成风&#xff0c;其中不乏已在内地市场深耕多年的传统老字号。数字化经营时代&#xff0c;老字号焕新刻不容缓&#xff0…

Vue3 笔记

vue3笔记 1. Vue3简介1.1. 【性能的提升】1.2.【 源码的升级】1.3. 【拥抱TypeScript】1.4. 【新的特性】 2. 创建Vue3工程2.1. 【基于 vue-cli 创建】2.2. 【基于 vite 创建】(推荐)2.3. 【一个简单的效果】 3. Vue3核心语法3.1. 【OptionsAPI 与 CompositionAPI】Options API…

四川古力未来科技抖音小店:科技魅力绽放,专业品质引领未来

随着互联网的快速发展&#xff0c;电商平台已成为消费者购买商品的重要渠道之一。在众多电商平台中&#xff0c;四川古力未来科技抖音小店以其独特的科技魅力和专业品质&#xff0c;吸引了众多消费者的目光。今天&#xff0c;我们就来一起探讨这家小店背后的故事&#xff0c;看…
最新文章