zoukankan      html  css  js  c++  java
  • 连表中环入口的节点

    题目描述

    一个链表中包含环,请找出该链表的环的入口结点。
    思路:
    具体思路可以参考网址:https://www.cnblogs.com/zhuzhenwei918/p/7491892.html
    假设满指针速度v,经过t时间后,两个指针相遇,此时:w+y=v*t;
    此时快指针速度为2*v,经过t时间后,假设快指针在环内行驶了1圈,此时:w+n+y = 2*v*t;
    由上述两步可以得到:w+n+y = 2(w+y);
    最终表示为:w = n-y。
    经过上述分析,当找到第一次相遇的节点时,一个节点从头开始,一个节点从相遇点开始,两个节点相遇处即为环的入口节点。
    public ListNode EntryNodeOfLoop(ListNode pHead)
        {
            if(pHead == null ||pHead.next == null) return null;
            ListNode low = pHead;
            ListNode fast = pHead;
            low = low.next;
            fast = fast.next.next;
            
            while(low!=fast){
                low = low.next;
                fast = fast.next.next;
            }
            fast = pHead;
            while(low!=fast){
                low = low.next;
                fast = fast.next;
            }
            return low;
        }
  • 相关阅读:
    iOS button总结
    蓝鸥 UI 考试 绝密
    iOS UI 21 消息通知
    iOS UI 21 单例中的线程
    iOS UI 21 线程
    iOS UI 21 动画
    iOS UI 20 音乐播放器
    深入Objective-C的动态特性
    符合iOS系统兼容性需求的方法
    IOS用NSLog做 debug调试
  • 原文地址:https://www.cnblogs.com/yingpu/p/5833584.html
Copyright © 2011-2022 走看看