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

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

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

<?php
/*class ListNode{
    var $val;
    var $next = NULL;
    function __construct($x){
        $this->val = $x;
    }
}*/
function FindFirstCommonNode($pHead1, $pHead2)
{
    // write code here
    $length1=0;
    $length2=0;
    $p1 = $pHead1;
    $p2 = $pHead2;
    while($p1){
        $length1++;
        $p1 = $p1->next;
    }
    while($p2){
        $length2++;
        $p2=$p2->next;
    }
    if($length1 > $length2){
        $len = $length1-$length2;
        $p = $pHead1;
        $pp = $pHead2;
    }else{
        $len = $length2-$length1;
        $p=$pHead2;
        $pp = $pHead1;
    }
    for($i=0;$i<$len;$i++){
        $p=$p->next;
    }
    while($p){
        if($p!=$pp){
            $p = $p->next;
            $pp = $pp->next;
        }else{
            return $p;
        }
    }return $p;
}

两个链表相交,说明两个链表相交后长度相同,如果两个链表长度有差异,从链表长度相同的位置开始同时遍历两个链表,如果有节点相同,说明两个链表有焦点

#被裁牛马刷题找工作#
全部评论

相关推荐

自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
挣K存W养DOG:我记得好多人说这个公司就是白嫖方案的,现在有大体方案要让你给他展示实现细节了,也是无敌了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务