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

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

https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

/**
 * 
 * @param pHead1 ListNode类 
 * @param pHead2 ListNode类 
 * @return ListNode类
 */
struct ListNode* FindFirstCommonNode(struct ListNode* pHead1, struct ListNode* pHead2 ) {
    // write code here
    struct ListNode* p=pHead1;
    struct ListNode* q=pHead2;
    int i=0;
    if(p==NULL || q==NULL)
        return NULL;

    //循环之前需要确保两个链表不为空
    while(i!=2)     //一共遍历两次,目的为了使两个变量都分别遍历过两个链表,使其所经过的路程一样
    {
        if(p==q)
            return p;
        p=p->next;
        q=q->next;
        if(p==NULL) //p将p所表示的链表遍历完成后,从另一个链表的头节点开始遍历
        {
            p=pHead2;
            i++;
        }
        if(q==NULL)
        {
            q=pHead1;
        }
    }
    return NULL;
}

全部评论

相关推荐

07-10 14:08
已编辑
江西农业大学 Java
拒绝无效加班的小学生...:期望3k吗?java这辈子有了
点赞 评论 收藏
分享
07-03 16:13
嘉应学院 Python
xiaolihuam...:很明显骗子,如果是hr直接约你面试了,哪用得着内推,如果是员工的话,你得多优秀,一线员工直接加你微信,
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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