这是一道easy题,但是思路还是有点意思,需要判断是否相交我们下意识的能想到我们需要用到双指针,但如何让两个指针能够在链表的相交位置上相遇?我们可以同时让两个指针两个链表的头结点开始遍历,如果到达了链表的尾部则跳到另一个链表的头结点,最终通过返回两个链表相同到达的节点。(如果有相交就是相交节点,如果没有相交节点则返回null)
public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode p1=headA; ListNode p2=headB; int flag1=0,flag2=0; while(p1!=p2) { p1=p1.next; if(p1==null&&flag1==0) { p1=headB; flag1=1; } p2=p2.next; if(p2==null&&flag2==0) { p2=headA; flag2=1; } } return p1; }