让指针走完两条链表,并且最多只能走一次。如果任何一个链表为空则直接返回空指针。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
if(!pHead1 || !pHead2)
return NULL;
ListNode* p = pHead1;
ListNode* q = pHead2;
int cnt1 = 0;
int cnt2 = 0;
while((p != q) && cnt1 <= 1 && cnt2 <= 1)
{
if(p == NULL)
{
p = pHead2;
cnt1++;
}
if(q == NULL)
{
q = pHead1;
cnt2++;
}
if(p==q)
break;
p = p->next;
q = q->next;
}
return p;
}
};
京公网安备 11010502036488号