題目:Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3
begin to intersect at node c1.
Notes:
null
.class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { if(headA==NULL ||headB==NULL) return NULL; int lenHeadA=0,lenHeadB=0; ListNode *p=headA,*q=headB; //求鏈表headA和headB的長度 while(p){ p=p->next; lenHeadA++; } p=headA; while(q){ q=q->next; lenHeadB++; } q=headB; int distance=0; if(lenHeadA>lenHeadB){ distance=lenHeadA-lenHeadB; for(int i=0;inext; } if(lenHeadA next; } //循環結束的條件是p==q!=null(有相交點) //或者是p==q==null(無相交點) while(p!=q){ p=p->next; q=q->next; } return p; };