求链表相交节点问题

判断链表是否相交
方法:遍历两个链表,分别保存两个链表的末尾节点,若两节点相等,就认为两节点相交
链表交叉,并找出交叉点:
方法:当两个链表相交时,当链表1遍历完自己的节点后,让链表1从链表2的头结点开始遍历,(链表2也同时执行同样操作步骤)这样我们可以发现,当这两个链表同时开始遍历,在一定会在第二次经过相交节点时相与,此时遍历链表的两个变量相等,那么证明找到了相交点,返回即可

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
      if(headA == null || headB == null){
        return null;
      }
      ListNode c1 = headA;
      ListNode c2 = headB;
      while(c1 != c2){
        c1=(c1 == null) ? headB:c1.next;
        c2=(c2 == null) ? headA:c2.next;
      }
      return c1;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值