【解题思路】
利用快慢指针 plong=pshort+dif_length
public Node findFirstAncestor(Node pHead1,Node pHead2){
if(pHead1==null||pHead2==null)
return null;
int list2_size=0;
int list1_size=0;
Node p1=pHead1;
Node p2=pHead2;
while(p1!=null)
{
list1_size++;
p1=p1.next;
}
while(p2!=null)
{
list2_size++;
p2=p2.next;
}
Node longNode=pHead1;
Node shortNode=pHead2;
int longSize=list1_size;
int shortSize=list2_size;
if(list1_size<=list2_size)
{
longNode=pHead2;
shortNode=pHead1;
longSize=list2_size;
shortSize=list1_size;
}
int count_dif=list1_size-list2_size;
for(int i=0;i<count_dif;i++)
longNode=longNode.next;
for(int i=0;i<shortSize;i++){
if(longNode.value==shortNode.value)
return longNode;
longNode=longNode.next;
shortNode=shortNode.next;
}
return longNode;
}