1 class Solution { 2 public: 3 ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { 4 int la=0,lb=0; 5 ListNode* pt=headA,*pa=headA,*pb=headB; 6 while(pt!=NULL) 7 { 8 la++; 9 pt=pt->next; 10 } 11 pt=headB; 12 while(pt!=NULL) 13 { 14 lb++; 15 pt=pt->next; 16 } 17 while(la>lb) 18 { 19 pa=pa->next; 20 la--; 21 } 22 while(lb>la) 23 { 24 pb=pb->next; 25 lb--; 26 } 27 while(pa!=pb) 28 { 29 pa=pa->next; 30 pb=pb->next; 31 } 32 return pa; 33 } 34 };
记得曾经在考研的时候做过这道题,先要求出链表的长度,较长的链表需要先走几步保证两条链表的剩余长度相等,判断共同起始点的条件可以是判断两条链表是否指向同一个节点