题解 | #链表中环的入口结点#

链表中环的入口结点

http://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4

快慢指针解法,快指针走两步慢指针走一步
当两针相遇时,快指针移动2k步,慢指针移动k步
即指针走k步回移动到相遇点。
设相遇点到环头位置距离m
即第三个指针从头移动k-m次就会移动到环头
又应为现在相遇的指针相等于在环头多走了m步,
所以同时相同速度移动新旧指针,当移动k-m步相遇,这时的相遇点就是环头

public ListNode EntryNodeOfLoop(ListNode pHead) {
        //解法2,快慢指针

        ListNode fast = pHead;
        ListNode slow = pHead;
        int stepF = 0;
        int stepS = 0;
        while (fast!=null&&slow!=null){
            if(stepF>stepS&&fast==slow){
                break;
            }
            fast = fast.next;
            if(fast!=null) {
                fast=fast.next;
                stepF+=2;
            }else {
                return null;
            }
            slow=slow.next;
            stepS++;
        }
        if(fast==null||slow==null) return null;
        //再走k-m步就会再次相遇
        fast=pHead;
        while (fast!=slow){
            fast = fast.next;
            slow = slow.next;
        }
        return slow;
    }
全部评论

相关推荐

Java大菜狗:纯纯招黑奴,一天还不到两百那么多要求,还不迟到早退,以为啥啊,给一点工资做一堆活,还以不拖欠员工工资为荣,这是什么值得骄傲的事情吗,纯纯***公司
点赞 评论 收藏
分享
陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-15 17:46
暑期就挂了,秋招还有机会吗
大聪明777:研发提前批,14号刚开的,官网上面的配图上有写。提前批没过的话,秋招还可以投,不过前面的笔试/面试记录会被保留,供秋招参考
26届校招投递进展
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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