[Pythonの-leetcode142-速度円形のリンクリストポインタ2]

問題の説明:

リストを考えると、チェーンリングの初めに最初のノードを返します。鎖非環式ならば、nullが返されます。

リングを与えられたリストを表示するために、我々は、POS整数(インデックスは0から始まる)リストの位置を表すために、リストの最後に接続されています。posが-1の場合、リングがこのリストに含まれていません。

説明:指定されたリストを変更しないようにしてください。

例1:

入力:ヘッド= [3,2,0、-4] 、POS = 1
出力:ノードインデックス1にテールコネクトは
説明:リストは、第2のノードに接続されたリングテール部分を有しています。

 

コア:leetcode141で環が存在するかどうかを決定するために解決されている、このタイトルは、前の質問のアップグレードバージョンであり、入口リングを解決する必要があります。この時点で高速と低速のポインタのポインタの最初の出会い、高速のポインタが最初のノードにリダイレクトされるように、かつ迅速に所定のポインタとゆっくりとしたペースが同じポインタがあるとき、彼らは、入り口ノードである。この時、で再び会うとき。

一重リンクリストのための定義。クラスListNode:      デフ__init __(自己、X):          self.val = X          self.next =なし

クラスソリューション:
     デフ detectCycle(自己、ヘッド:ListNode) - > ListNode:
         もし頭==なしまたは head.next == なし:
             戻りなし
        遅い =が
        速い = ヘッド
         しばらく速いfast.next:
            遅い = = slow.next
            速いfast.next.next
             もし遅い== 速い:
                 しばらく!頭= :遅い = head.next 
                    遅い = slow.next
                 リターンヘッドの
         戻りなし  

結果:

 

おすすめ

転載: www.cnblogs.com/xiximayou/p/12337347.html