难度:简单
频率:140
题目

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



解题方法:双指针遍历
解题思路:

  • 1.假设两个链表没有相交,即两个指针分别遍历 两个链表(遍历完第一个直接遍历第二个head) 最后同时结束(同时为null)
  • 2.假设两个链表相交,即最后肯定是有一小段是同一段。即Y的下面**[C]**。
  • 3.而两个链表的总节点数总一定的**[A+C+B+C],最后又有一小段是一定的[C],故如果是相交,我们遍历完第一个链表,再遍历到相交点是的总节点数量是一定的[A+C+B=B+C+A]**,即同时动的话就会相交。
  • 故只要同时遍历,并且判断是否两指针相等即可。
  • 相等的情况有两种
    • 第一种 没有相交,跟1说的一样,都是遍历到结尾null处,直接返回null即可。
    • 第二种 相交,而且相等点即为相交点。
      代码
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode p1=headA,p2=headB;while(p1!=p2){p1=p1!=null?p1.next:headB;p2=p2!=null?p2.next:headA;}return p1;}
}

需要注意的地方
1.遍历的时候,是遍历完第一个链表即返回第二个链表头节点head处。
2.遍历的时候,只要不是null,就next;

Leetcode 160.相交链表相关推荐

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

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

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

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

  3. [leetcode]160.相交链表

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

  4. [leetcode] 160.相交链表

    给你两个单链表的头节点 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】【HOT】160. 相交链表

    [LeetCode][HOT]160. 相交链表 文章目录 [LeetCode][HOT]160. 相交链表 package hot;class ListNode{int val;ListNode n ...

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

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

最新文章

  1. Boost--Graph
  2. LINUX ORACLE 启动与关闭
  3. 通过JS和CSS,实现网页加载中的动画效果
  4. tomcat7下配置session复制和nginx做负载均衡
  5. python批量删除_Python批量删除只保留最近几天table的代码实例
  6. NFS+rsync+inotify镜像
  7. 服务和服务帐户安全规划指南
  8. 网站备案中遇到的问题 名词和解释 大全
  9. 数据加密 ---- SHA 加密
  10. raid 0 1 5 10的区别以及应用
  11. 网络诈骗有哪些防范措施
  12. 使用 Kubernetes Ingress 对外暴露服务
  13. C# 读取或修改文件后缀
  14. 复习高数下册8-10章主要内容(简略版)
  15. P1551 亲戚(并查集)
  16. 考研数二第十讲 求导平面曲线的切线和法线以及曲率圆与曲率半径和弧微分
  17. 在mt6735中添加新的开机logo与开\关机动画
  18. 关于“顾问之路”的探讨与总结
  19. 我所知道的 11 条领导力(Ping++ CEO 金亦冶)
  20. 成都奔驰改装改装通风座椅 蔚一车改

热门文章

  1. 解决ajax获取不到按钮的id
  2. 4 个最好的 Linux 引导程序
  3. Linux的profile与bashrc的分析
  4. 此心拖泥带水,是人生最苦处
  5. oracle查看用户密码时间限制
  6. [Apache]网站页面静态化与Apache调优(图)
  7. 算法串匹配C++实现字符串匹配的KMP算法
  8. php中this,self,parent三个关键字之间的区别(转载)
  9. 艾伟:老赵谈IL(3):IL可以看到的东西,其实大都也可以用C#来发现
  10. PHP 实现代码复用的一个方法 traits新特性