課題でLeetcodeの問題に取り組んでいます。
下記が答えのコードですが、自分なりに日本語で解釈してみたのですが、
以下の解釈でおかしい点はありますでしょうか?
言語はPython3になります。
class Solution: def detectCycle(self, head: ListNode) -> ListNode: # head, つまりlistの中身がないならヌルを返す if head == None: return None # slowとfastにhead(つまりノードの頭)を代入 slow = head fast = head # Trueの時、つまりslowポインターがある間で # fastポインターとfastポインターの次のポインターがヌルの時、 # ヌルを返す while True: if fast.next == None or fast.next.next == None: return None # slowポインターを次に、fastポインターを次の次のノードに移動させる slow = slow.next fast = fast.next.next # もし、slowとfastが一致するならループを抜ける if slow == fast: break # slowがhead(つまりノードの頭)にアップデートされる slow = head # slowとfastが重なり合うとき、両方、次のポインターへ移る。 while slow != fast: slow = slow.next fast = fast.next # 上記のものに当てはまらないのであればslowを返す return slow
あなたの回答
tips
プレビュー