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

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

http://www.nowcoder.com/questionTerminal/6ab1d9a29e88450685099d45c9e31e46

看了大家的题解,发现重点就是解决链表长度不一致的问题
用了笨方法,先把链表长度的差值x计算出来,让长链表先走x步,然后同步向下走就得到了第一个公共节点。(其实可以利用两个链表长度和是一致解决)

public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {

        if(pHead1==pHead2)return pHead1;
        ListNode t1 = pHead1;
        ListNode t2 = pHead2;
        while(t1!=null&&t2!=null){
            t1 = t1.next;
            t2 = t2.next;
        }
        int count = 0;
        if(t1!=null){
            while(t1!=null){
                t1 = t1.next;
                count++;
            }
            for (int i = 0; i <count ; i++) {
                pHead1=pHead1.next;
            }
            while(pHead1!=null&pHead2!=null){
                if(pHead1==pHead2) return pHead1;
                pHead1=pHead1.next;
                pHead2 = pHead2.next;
            }
        }
        if(t2!=null){
            while(t2!=null){
                t2=t2.next;
                count++;
            }
            for (int i = 0; i <count ; i++) {
                pHead2=pHead2.next;
            }
            while(pHead1!=null&pHead2!=null){
                if(pHead1==pHead2) return pHead1;
                pHead1=pHead1.next;
                pHead2 = pHead2.next;
            }
        }

       return null;
    }
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-23 17:32
那如果是字节外包呢?据我所知工牌无区别&nbsp;可以晒出去装X的那种
秋盈丶:残酷的是,都一样,管你是不是字节,不过我是很反对这种的,本是同根生,市场行情决定了用工的模式会有很多外包,分层只是单纯为了筛选
点赞 评论 收藏
分享
一表renzha:你点进去没打招呼他也会有提示的,之前我点进美的,还没打招呼,他马上给我发了不太合适哦
点赞 评论 收藏
分享
点赞 评论 收藏
分享
Twilight_mu:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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