【解题思路】
利用快慢指针 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; }
