/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func hasCycle(head *ListNode) bool {
p, p2 := head, head
for p != nil && p2 != nil {
p, p2 = p.Next, p2.Next
if p2 == nil {
break
}
p2 = p2.Next
if p == p2 {
return true
}
}
return false
}