/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
ListNode *p1=pHead1;
ListNode *p2=pHead2;
int x1=0,x2=0;
while(p1!=nullptr){
x1++;
p1=p1->next;
}
while(p2!=nullptr){
x2++;
p2=p2->next;
}
ListNode *s1=pHead1;
ListNode *s2=pHead2;
if(x1>x2){
for(int i=0;i<(x1-x2);i++){
s1=s1->next;
}
}
else if(x2>x1){
for(int i=0;i<(x2-x1);i++){
s2=s2->next;
}
}
do{
if(s1==s2){
return s1;
}
s1=s1->next;
s2=s2->next;
}while(s1!=nullptr);
return nullptr;
}
};