题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
*
* @param pHead1 ListNode类
* @param pHead2 ListNode类
* @return ListNode类
*/
/*
解题思维就是:每次从phead1里拿一个节点去挨个问phead2这和你的节点指针一样吗?
错误总结:刚开始思考的是“每次从phead1里拿一个节点去挨个问phead2你们两的下一个节点是同一个吗?”然后就他们两的下一个节点指针作为函数返回值。但是忽视了一种情况就是如果一开始就是共同节点呢?
*/
struct ListNode* FindFirstCommonNode(struct ListNode* pHead1, struct ListNode* pHead2 ) {
// write code here
struct ListNode*tmp1=NULL,*tmp2;
if(pHead1!=NULL&&pHead2!=NULL)
{
tmp1=pHead1;
while(tmp1->next!=NULL)
{
tmp2=pHead2;
while(tmp2->next!=NULL)
{
if(tmp1==tmp2)
{
break;
}else {
//移动
tmp2=tmp2->next;
}
}
if(tmp1==tmp2)
{
break;
}else {
tmp1=tmp1->next;//移动
}
}
if(tmp1!=tmp2)
{
tmp1=NULL;
}
}
return tmp1;
}

美的集团公司福利 815人发布