下記の問題に対して、間違えているコード
がインプットデータが [1,2]0
のときに失敗してしまいます。
原因をデバックをしながら特定しようとしていますが、見つけられずにいます。
もし、お気づきの点ありましたらご教示いただけませんしょうか?
Given the head of a linked list, return the node where the cycle begins. If there is no cycle, return null.
There is a cycle in a linked list if there is some node in the list that can be reached again by continuously following the next pointer. Internally, pos is used to denote the index of the node that tail's next pointer is connected to (0-indexed). It is -1 if there is no cycle. Note that pos is not passed as a parameter.
Do not modify the linked list.
引用元: 142. Linked List Cycle II
間違えているコード
python
1# Definition for singly-linked list. 2# class ListNode: 3# def __init__(self, x): 4# self.val = x 5# self.next = None 6 7class Solution: 8 def detectCycle(self, head: ListNode) -> ListNode: 9 idx_table = {} 10 count = 0 11 12 while head: # node1, node2, node1 13 if idx_table.get(head, 0): # {}, {node1: 0}, {node1: 0, node2:1} 14 return head 15 16 idx_table[head] = count # {node1: 0}, {node1: 0, node2:1} 17 head = head.next # node2, node1 18 count+=1 # 1, 2
アウトプット1(失敗)
Your input [1,2] 0 Output tail connects to node index 1 Expected tail connects to node index 0
アウトプット2(成功)
Your input [3,2,0,-4] 1 Output tail connects to node index 1 Expected tail connects to node index 1
下記の書き方では正解できてはいます。
正解のコード1
python
1 2 seen = set() 3 while head: 4 if head in seen: 5 return head 6 seen.add(head) 7 head = head.next
正解のコード2
hash_map = {} while head: hash_map[head] = head if hash_map.get(head.next, 0): return head.next head = head.next
回答1件
あなたの回答
tips
プレビュー