题解 | #两个链表的第一个公共结点#

两个链表的第一个公共结点

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;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-10 11:42
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务