在给 hashTable[curNode]
赋值时,应该赋的是具体的值,而不是类型。修改为 hashTable[curNode] = struct{}{}
或者使用其他具体的值。
另外,在遍历链表时需要将 curNode
更新为下一个节点,否则会出现无限循环的情况。添加 curNode = curNode.Next
语句来更新当前节点。
以下是修正后的代码:
func detectCycle(head *ListNode) *ListNode {
curNode := head
hashTable := make(map[*ListNode]struct{})
for curNode != nil {
if _, exist := hashTable[curNode]; exist {
return curNode
}
hashTable[curNode] = struct{}{}
curNode = curNode.Next
}
return nil
}
这样就可以正确地检测链表中是否存在环,并返回环起始节点。
内容由零声教学AI助手提供,问题来源于学员提问