1. 题目描述
2. 题目分析
- 我们可以看到,假如两个链表有交点的话,他们的图和实例一样
- 这时候,我们观察图1的路线:
a1—>c1—>c3—>b1—>c1
b1—>c1—>c3—>a1—>c1
可以看出来,这两条路线的值是相等的 - 题目的思路就是,A先走自己的路,再走B的路,B也亦然,最后,如果两个链表有交点,一定会在交点停下,否则,则会在null停下
3. 题目代码
public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode p1 = headA; ListNode p2 = headB; while(p1 != p2){ if(p1 != null){ p1 = p1.next; }else{ p1 = headB; } if(p2 != null){ p2 = p2.next; }else{ p2 = headA; } } return p1; } }