标签:
题目: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;i<distance;i++) p=p->next; } if(lenHeadA<lenHeadB){ distance=lenHeadB-lenHeadA; for(int i=0;i<distance;i++) q=q->next; } //循环结束的条件是p==q!=null(有相交点) //或者是p==q==null(无相交点) while(p!=q){ p=p->next; q=q->next; } return p; };
Intersection of Two Linked Lists
标签:
原文地址:http://blog.csdn.net/sxhlovehmm/article/details/44785783