题解 | 两个链表的第一个公共结点
两个链表的第一个公共结点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
//两套嵌套while循环解决,第一个while判断phead1是否等于第二个链表此时的头结点,第二个while让phead1右移
class Solution {
public:
ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
if(pHead1==nullptr||pHead2==nullptr){return nullptr;}//若链表1和2中有空,则没有交点
while(pHead1){
ListNode* p=pHead2;//令p代替phead2去遍历,因为每次判断都要从phead2的头部开始
while(p){
if(p==pHead1)//找到相交的点就返回
return p;
else p=p->next;//否则继续遍历第二个链表
}
pHead1=pHead1->next;//第一个链表判断过的点不用在看了,右移
}
return nullptr;//都没有,返回空
}
};


