链表
然后问题就转化为了如何知道哪个链表的长度更长一点,比长度短的链表多了几个结点。解决这个问题的话,我们只需要先设置两个指针,分别指向两个链表的头节点,然后当一个指针指向空了以后开始计数,看另一个指针走多少步才会指向空。
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
ListNode* L1 = pHead1;
ListNode* L2 = pHead2;
int l1 = 0,l2 = 0;
while(L1 !=NULL || L2!= NULL)
{
if(L1!=NULL){L1 = L1->next;}
else{ l2++; }
if(L2 != NULL){L2 = L2->next;}
else{ l1++; }
}
L1 = pHead1;
L2 = pHead2;
while(l1!=0)
{
L1 = L1->next;
l1--;
}
while(l2!=0)
{
L2 = L2->next;
l2--;
}
while(L1!=L2)
{
L1 = L1->next;
L2 = L2->next;
}
return L1;
}
};
查看13道真题和解析