标签:
题目: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