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;
}
}