鏈表中環的入口節點:
此題設快慢兩個指標,先判斷是否有環:如果為環快慢指標侄訓相遇;
找入口節點:快慢指標相遇的節點到入口節點的距離,與從頭節點開始新的慢指標到相遇點的距離相同,
可畫圖演示,因為快指標是慢指標的兩倍速,且他們在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; } } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/2129.html
標籤:其他
上一篇:干貨!直擊JVM底層 —— Java Class位元組碼檔案決議
下一篇:鏈表--從頭到尾列印鏈表
