给你两个单链表的头节点 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. 相交链表(双指针)相关推荐

  1. Leetcode 160.相交链表

    难度:简单 频率:140 题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存在相交节点,返回 null . 解题方法:双指针遍历 解题 ...

  2. [leetcode] 160.相交链表

    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...

  3. Leetcode 160. 相交链表 解题思路及C++实现

    解题思路: 先将两个链表构建成一个环,定义两个快慢指针,当它们相遇时,将fast指针从头结点往后遍历,每次走一步,当这两个指针再次相遇时,该节点就是相交节点. /*** Definition for ...

  4. Leetcode 160 相交链表 (每日一题 20210802)

    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null .图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中 ...

  5. [leetcode]160.相交链表

    给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结 ...

  6. LeetCode 160. 相交链表

    文章目录 1. 题目信息 2. 解题 2.1 计算长度 2.2 交替遍历 1. 题目信息 编写一个程序,找到两个单链表相交的起始节点. <剑指Offer>同题:面试题52. 两个链表的第一 ...

  7. LeetCode 160. 相交链表(c++实现)

    思路 统计两个链表的长度,并记录两个链表尾结点,判断是否相同. 比较链表长度,让较长的链表走|lenA-lenB|步数,使得两个俩表剩余部分长度相等 两个链表一起走,走到相同节点,即相交节点. 实现 ...

  8. 【Leetcode】拿捏链表(四)——160. 相交链表、141. 环形链表、142. 环形链表 II

    作者:一个喜欢猫咪的的程序员 专栏:<Leetcode> 喜欢的话:世间因为少年的挺身而出,而更加瑰丽.                                  --<人民 ...

  9. LeetCode Algorithm 160. 相交链表

    160. 相交链表 Ideas 这题之前左神算法课的时候也讲过,那是一个带环的相交链表,不过原理都是一样的. 双指针,a指针先沿着headA开始走,走到头之后开始沿着headB继续走,b指针先沿着he ...

最新文章

  1. 崇拜的Unix大牛,记录之。
  2. arm linux 64位,微软准备让Linux作为64位ARM Hyper-V客户机运行
  3. [知识图谱构建] 二.《Neo4j基础入门》基础学习之创建图数据库节点及关系
  4. mysql必知必会学习笔记(一)
  5. html位置下移像素点,吃透移动端 1px的具体用法
  6. Connected to the target VM, address: ‘127.0.0.1:0‘, transport: ‘socket‘ Disconnected from the target
  7. HDU 5978 2016ICPC大连 H: To begin or not to begin
  8. I2C总线协议原理介绍
  9. 深度相机原理揭秘之结构光法
  10. linux多个文件打包命令行,Linux基础:对文件打包压缩
  11. 在校园暴力中成长的孤僻少年,如何逆袭剑桥,成为一代科学大师
  12. isSucess = result == sucess_signal
  13. 我把淘宝当副业,一年全款买了房:你看不起的行业,真的很赚钱
  14. 教孩子学习乘法和除法,我算是绞尽脑汁了
  15. 10月31日科技资讯|抖音回应视频泄露:草稿不会上传后台;苹果开卖5000元印度版iPhone XR;Jboot 2.2.5发布|极客头条
  16. Daily Scrum Meeting 11.07
  17. VBA多条件选择及自动填表及计算汇报
  18. JS获取当前使用的浏览器名字以及版本号
  19. 听音乐用什么蓝牙耳机好?听音乐音质好的蓝牙耳机推荐
  20. 某某文学网站小说爬虫

热门文章

  1. java提取json数组对象所有的id,一文轻松搞定
  2. 以JSONobject形式提交http请求
  3. 网络编程 socket介绍
  4. BZOJ1453: [Wc]Dface双面棋盘
  5. flask内置session原理
  6. HTTPS与MITM
  7. Android Studio 错误集
  8. MongoDB 空指针引用拒绝服务漏洞
  9. 【写给朱大虫的教程】【Ruby on Rails】【006】遵循Rails理念的快速实现
  10. Oracle 常用伎俩和剧本