diff --git a/pkg/linked_list_cycle/main.go b/pkg/linked_list_cycle/main.go new file mode 100644 index 0000000..67bd42d --- /dev/null +++ b/pkg/linked_list_cycle/main.go @@ -0,0 +1,28 @@ +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 +}