• 链表--链表中环的入口节点


    链表中环的入口节点:

    此题设快慢两个指针,先判断是否有环:如果为环快慢指针终会相遇;

    找入口节点:快慢指针相遇的节点到入口节点的距离,与从头节点开始新的慢指针到相遇点的距离相同。

    可画图演示。因为快指针是慢指针的两倍速,且他们在q点相遇,则我们可以得到等式 2(A+B) = A+B+C+B.得出C=A

    function EntryNodeOfLoop(pHead){
    
        if(pHead == null || pHead.next == null||pHead.next.next==null){
    
                return null;
    
            }
    
            let fast = pHead;
    
            let slow = pHead;
    
            while(fast != null && fast.next != null){
    
                fast = fast.next.next;
    
                slow = slow.next;
    
                if(fast == slow){
    
                   let slow2 = pHead;
    
                    while(slow2 != slow){
    
                        slow2 = slow2.next;
    
                        slow = slow.next;
    
                    }
    
                    return slow2;
    
                }
    
            }
    
    }
  • 相关阅读:
    牛客网 CSL的英语考试
    SDNU 1016.矩形合并
    SDNU 1412.Huffuman树(优先队列)
    HDU
    HDU
    HDU
    SDNU 1504.B.Fibonacci
    Find them, Catch them(种类并查集)
    golang中的net/rpc包
    gRPC
  • 原文地址:https://www.cnblogs.com/mlebk/p/12396046.html
Copyright © 2020-2023  润新知