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

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

https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?tpId=196&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey

//如果两个链表长度相同,直接遍历即可;
//长度不同,如链表1长度len1,链表2长度为len2,len1>len2,如下所示p1节点从链表1的第len1-len2+1个节点,链表2从链表头开始遍历,此时两个链表遍历长度相等。
同时考虑没有公共节点的情况。

public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        if(pHead1==null || pHead2== null) return null; 
        ListNode l1 = pHead1;
         ListNode l2 = pHead2;
        while(l1!=l2){
            l1 = l1.next;
            l2 = l2.next;
            if(l1==null && l2==null) return null;//同时注意在没有公共节点的时候,进行判别,否则出现死循环;
            if(l1==null){
                l1 = pHead2;
            }
            if(l2==null){
                l2 = pHead1;
            }
        }
        return l1;
    }
全部评论

相关推荐

点赞 评论 收藏
分享
真烦好烦真烦:牛友太有实力了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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