package linked_list_cycle type ListNode struct { Val int Next *ListNode } func succeed(n *ListNode) *ListNode { if n == nil { return n } else { return n.Next } } func HasCycle(head *ListNode) bool { one, two := head, succeed(head) for one != nil && two != nil { if one == two { return true } one, two = succeed(one), succeed(succeed(two)) } return false }