编写一个程序,找到两个单链表相交的起始节点。
如下面的两个链表:
示例:
思路:假设A链表在交点之前长度为a,B链表在交点之前的长度为b,链表公共长度为c。所以可以知道有:a+c+b = b+c+a。因此当A链表走到尾之后还没有交点出现就继续从B链表的头开始往下走,B链表操作一样。
程序:
public class Solution{
public ListNode getIntersectionNode(ListNode headA,ListNode headB){
ListNode l1 = headA,l2 = headB;
while(l1 != l2){
l1 = (l1 == null) ? headB:l1.next;
l2 = (l2 == null)?headA:l2.next;
}
return l1;
}
}