判断链表是否相交
方法:遍历两个链表,分别保存两个链表的末尾节点,若两节点相等,就认为两节点相交
链表交叉,并找出交叉点:
方法:当两个链表相交时,当链表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;
}
}