<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          劍指 Offer II 022. 鏈表中環(huán)的入口節(jié)點

          共 1574字,需瀏覽 4分鐘

           ·

          2021-08-22 00:08


            點擊上方“JavaEdge”,關(guān)注公眾號

          設(shè)為“星標(biāo)”,好文章不錯過!


          解析



          先通過快慢指針判斷有無環(huán)

          無環(huán)


          直接返回null

          有環(huán)


          假設(shè):

          • 起點到環(huán)起點的距離是a

          • 環(huán)的長度是k

          • 且此時A、B在距離環(huán)起點x距離處相遇

          即慢指針再走x步就到達(dá)環(huán)的入口,此時slow走過的距離

          a + nk + (k - x)

          快指針走過的距離: 

          a + mk + (k - x)

          由快慢的定義可知:

          a + mk + (k - x) = 2 * (a + nk + (k - x))

          化簡得:

           a = (m - 2n -1)k + x

          可知a為k的整數(shù)倍加x,而AB相遇的位置再走x步恰是環(huán)入口,所以此時讓其中一個指針指向起點,然后同步走,一定能在環(huán)入口相遇!


          所以可得代碼:

          package com.javaedge;
          /** * @author JavaEdge * @date 2021/8/17 */public class DetectCycle {
          static class ListNode { int val;        ListNode next; ListNode(int x) { val = x; next = null; } }
          public ListNode detectCycle(ListNode head) { ListNode slow = head; ListNode fast = head; boolean isCircled = false; while (fast != null && fast.next != null) { slow = slow.next; fast = fast.next.next; if (slow == fast) { isCircled = true; break; } } if (!isCircled) { // 無環(huán) return null; }
                  slow = head; while (slow != fast) { slow = slow.next; fast = fast.next; } return slow; }}


          往期推薦


          擁抱Kubernetes,再見了Spring Cloud

          百度二面:一個線程OOM了,其它線程還能運(yùn)行嗎?

          這一次徹底搞懂JDK動態(tài)代理

          Iterator迭代器到底是什么?


          目前交流群已有 800+人,旨在促進(jìn)技術(shù)交流,可關(guān)注公眾號添加筆者微信邀請進(jìn)群



          喜歡文章,點個“在看、點贊、分享”素質(zhì)三連支持一下~

          瀏覽 43
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  左手影音成人在线 | 黄色免费看视频 | 成人免费看性爱大片密芽 | 五月天深爱激情网 | 老B乱子伦 |