先各遍历一次看是不是交于同一node,顺便记录2个链子的长度。
然后根据长度差距再遍历找到交点。。
public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { if (headA == null || headB == null) return null; ListNode dum1 = new ListNode(0); ListNode dum2 = new ListNode(0); dum1.next = headA; dum2.next = headB; int count1 = 0; int count2 = 0; ListNode temp1 = dum1; while (temp1.next != null) { count1++; temp1 = temp1.next; } ListNode temp2 = dum2; while (temp2.next != null) { count2++; temp2 = temp2.next; } if (temp1 != temp2) return null; if (count1 > count2) { temp1 = dum1; temp2 = dum2; } else { temp1 = dum2; temp2 = dum1; } int diff = Math.abs(count1 - count2); while (diff > 0) { temp1 = temp1.next; diff--; } while (temp1 != temp2) { temp1 = temp1.next; temp2 = temp2.next; } return temp1; }}