class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
if(!pHead1 || !pHead2) return nullptr;
int len=0;
for(ListNode* cur = pHead1 ; cur!=nullptr ; cur = cur->next)
{
++len;
}
for(ListNode* cur = pHead2 ; cur ; cur = cur->next)
{
--len;
}
ListNode* cur1, *cur2;
cur1 = len>0 ? pHead1 : pHead2;
cur2 = (cur1==pHead1) ? pHead2 : pHead1;
len = len>0 ? len : -len;
while(len--)
{
cur1 = cur1->next;
}
while(cur1 != cur2)
{
cur1 = cur1->next;
cur2 = cur2->next;
}
return cur1;
}
};