linked_list_cycle_ii
linked_list_cycle_ii.go 源码
package main
// 环形链表II
// 使用一个set
func detectCycle1(head *ListNode) *ListNode {
set := make(map[*ListNode]bool)
for head != nil {
if set[head] {
return head
}
set[head], head = true, head.Next
}
return nil
}
func detectCycle2(head *ListNode) *ListNode {
slow, fast := head, head
for fast != nil && fast.Next != nil {
slow, fast = slow.Next, fast.Next.Next
if slow == fast {
fast = head
for slow != fast {
slow, fast = slow.Next, fast.Next
}
return slow
}
}
return nil
}
你可能感兴趣的文章
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦