問題の説明:
リストを考えると、チェーンリングの初めに最初のノードを返します。鎖非環式ならば、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 リターンヘッドの 戻りなし
結果: