leetcode 160. 相交链表(双指针)
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
图示两个链表在节点 c1 开始相交:
题目数据 保证 整个链式结构中不存在环。
注意,函数返回结果后,链表必须 保持其原始结构 。
- 示例 1:
输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3
输出:Intersected at ‘8’
解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。
从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。
在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。
- 示例 2:
输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Intersected at ‘2’
解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。
从各自的表头开始算起,链表 A 为 [0,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 。
解题思路
将链表分为两段,一段为相交前的a,b不同的两段,一段是相交后的c段
因此在链表a指针移动到链表a末尾时,就将指针移动到链表b的开头。链表b也是同理
这时指针a和指针b走过的路程均为a+b+c,这就是他们的交点。如果没有交点的话,他们的路程就是a+b,并且两个指针最后指向两个链表的末尾
代码
/*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*/
func getIntersectionNode(headA, headB *ListNode) *ListNode {oa,ob:=headA,headBfor headB!=headA {if headA==nil{headA=ob}else {headA=headA.Next}if headB==nil{headB=oa}else{headB=headB.Next}}return headA}
leetcode 160. 相交链表(双指针)相关推荐
- Leetcode 160.相交链表
难度:简单 频率:140 题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存在相交节点,返回 null . 解题方法:双指针遍历 解题 ...
- [leetcode] 160.相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...
- Leetcode 160. 相交链表 解题思路及C++实现
解题思路: 先将两个链表构建成一个环,定义两个快慢指针,当它们相遇时,将fast指针从头结点往后遍历,每次走一步,当这两个指针再次相遇时,该节点就是相交节点. /*** Definition for ...
- Leetcode 160 相交链表 (每日一题 20210802)
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null .图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中 ...
- [leetcode]160.相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...
- LeetCode 160. 相交链表
文章目录 1. 题目信息 2. 解题 2.1 计算长度 2.2 交替遍历 1. 题目信息 编写一个程序,找到两个单链表相交的起始节点. <剑指Offer>同题:面试题52. 两个链表的第一 ...
- LeetCode 160. 相交链表(c++实现)
思路 统计两个链表的长度,并记录两个链表尾结点,判断是否相同. 比较链表长度,让较长的链表走|lenA-lenB|步数,使得两个俩表剩余部分长度相等 两个链表一起走,走到相同节点,即相交节点. 实现 ...
- 【Leetcode】拿捏链表(四)——160. 相交链表、141. 环形链表、142. 环形链表 II
作者:一个喜欢猫咪的的程序员 专栏:<Leetcode> 喜欢的话:世间因为少年的挺身而出,而更加瑰丽. --<人民 ...
- LeetCode Algorithm 160. 相交链表
160. 相交链表 Ideas 这题之前左神算法课的时候也讲过,那是一个带环的相交链表,不过原理都是一样的. 双指针,a指针先沿着headA开始走,走到头之后开始沿着headB继续走,b指针先沿着he ...
最新文章
- Sublime Text 自动换行
- es中的DiscoveryModule
- Docker入门简介
- Solr-4.10.2安装
- 文献记录(part58)--不平衡数据处理的新方法一基于样本相似度的少数合成法
- Mysql-my-innodb-heavy-4G.cnf配置文件注解
- 阿里达摩院青橙奖“硬核10人”出炉,钟南山寄语青年科学家
- pandas.DataFrame的pivot()和unstack()实现行转列
- Sharding-Proxy读写分离_Sharding-Sphere_分库分表_读写分离_工作笔记021
- ANDROID L——Material Design详解(UI控件)
- 不显示藏宝阁试穿服务器,梦幻西游:藏宝阁试穿功能的妙用,无限回档测试
- 客户端用java api 远程操作HDFS以及远程提交MR任务(源码和异常处理)
- cadence的PCB封装库导入Altium designer
- RuntimeError: ./xxx.pth is a zip archive (did you mean to use torch.jit.load()?)
- 黑马python培训视频网盘下载
- 在书的侧面(包括书口、书顶<上切口>、书根<下切口>)写的字如何去除
- 华为重启交换机命令_华为交换机常用命令
- 使用opencv测量点到线的距离
- 台式计算机如何拆硬盘,台式机硬盘如何拆卸
- 华为鸿蒙理性,华为的理性 鸿蒙的节奏