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

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

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

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

自定义评测:

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

intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0
listA - 第一个链表
listB - 第二个链表
skipA - 在 listA 中(从头节点开始)跳到交叉节点的节点数
skipB - 在 listB 中(从头节点开始)跳到交叉节点的节点数
评测系统将根据这些输入创建链式数据结构,并将两个头节点 headA 和 headB 传递给你的程序。如果程序能够正确返回相交节点,那么你的解决方案将被 视作正确答案 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题报告:

对于这种链表题,就给定了两个指针,那指针移动到头了,就想办法再指向别的继续移动呗。

可以用极端考虑法,假设两个链表相交在最后一个节点,比如1->2->3->4->5和30->20->5。

链表1走了5步到头,链表2走3步到头,所以我们让指针1再走一遍链表2,指针2再走一遍链表1即可。即3+5=5+3,就相当于两个指针都走了一个圈就是了。为了判断不像交的情况,可以在表尾加一个NULL节点作为适配。依旧是两个指针都走了一个圈,是可以统一起来的。然后发现不极端的情况,也是可以统一起来的。所以解法就是这样了。

/*** 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 == NULL) pa = headB;else pa = pa->next;if(pb == NULL) pb = headA;else pb = pb->next;}return pa;}
};

【LeetCode160】相交链表相关推荐

  1. Leetcode160. 相交链表

    Leetcode160. 相交链表 题目: 编写一个程序,找到两个单链表相交的起始节点. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = ...

  2. 47 - 算法 - Leetcode-160 -相交链表

    // 链表对齐 - 160 相交链表class Solution {public:ListNode *getIntersectionNode(ListNode *headA, ListNode *he ...

  3. [Swift]LeetCode160. 相交链表 | Intersection of Two Linked Lists

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  4. leetcode160 相交链表

    编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB ...

  5. LeetCode160.相交链表

    题目来源:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/description/ 题目描述: 解法一: 先统计两根 ...

  6. 【每日一算法】相交链表

    微信改版,加星标不迷路! 每日一算法 - 相交链表 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, l ...

  7. 《LeetCode力扣练习》第160题 相交链表 Java

    <LeetCode力扣练习>第160题 相交链表 Java 一.资源 题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存 ...

  8. leetcode 160 简单难度 相交链表

    160. 相交链表 编写一个程序,找到两个单链表相交的起始节点. 如下面的两个链表: 在节点 c1 开始相交. 输入:intersectVal = 8, listA = [4,1,8,4,5], li ...

  9. 文巾解题 160. 相交链表

    1 题目描述 2 解题思路 2.1 哈希表 遍历listA,把每个节点(以及后继节点)放入一个list中.遍历完A之后遍历B,如果B的某个节点(以及后继节点)在这个list中,那么我们就找到了相交的部 ...

  10. LeetCode-链表-160. 相交链表

    160. 相交链表 思路一:使用set用到了额外的内存,没有达到题目要求 /*** Definition for singly-linked list.* struct ListNode {* int ...

最新文章

  1. 机器学习中的一些概念
  2. 使用Gearman做分布式计算
  3. 复数的物理意义是什么
  4. NAPI技术--原理和实现(一)
  5. php spry文本域_用Spry框架来简化AJAX
  6. 干涉测量技术的应用_技术分享 | 石化行业测量仪表应用在线答疑
  7. wake on lan
  8. 电脑端音乐播放器html5,分享|5 个很酷的音乐播放器
  9. react实现聊天界面_React-Redux 100行代码简易版探究原理
  10. win10有源信号分辨率怎么调_示波器高灵敏度小信号测量的注意事项
  11. WBE前端笔记1:HTML中一些不熟悉的标签
  12. 可以赚钱的副业项目,简单易上手兼职副业推荐
  13. CodeQL笔记之基本语法(一)
  14. dom4j的一些总结
  15. 火狐不能html转execl,使用Blob无法在FireFox中使用Excel导出JavaScript
  16. [UNR #3]百鸽笼
  17. matlab自定义函数的使用方法,Matlab自定义函数的几种方法
  18. Kotlin Flow 冷流 StateFlow 热流 StateFlow 的应用
  19. android动画简介
  20. 冲顶数据产品经理笔试题及解答

热门文章

  1. 使用SqlCommandBuilder
  2. 140. Word Break II
  3. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第19篇]Shamir密钥交换场景
  4. c语言获取dll文件路径,C语言URLDownloadToFile获取文件下载进度
  5. linux下tar包安装sudo命令,ubuntu12.04LTS安装gv-412-Linux-x86.tar.gz方法
  6. 命令创建mysql数据库_怎么在命令行创建一个mysql数据库
  7. 小甲鱼c语言课后作业_知识,就是力量——山财“学习小课堂”助你蓄力
  8. Threejs性能监视和可视化控制
  9. 一建机电实务教材电子版_20年一建其实并不难,官方出版:复习题集(精修),速做速提90分...
  10. uploadify java 上传_jquery使用uploadify插件实现多文件的上传(java版)