判断链表中是否有环
leetcode 141 环形链表
给你一个链表的头节点 head ,判断链表中是否有环。
快慢指针解法。快慢指针的特点是:初始化时,慢的指向第一个,快的指向下一个,移动的时候,慢的每次一步,快的每次两步,移动过程中,记住判断有没有下一步。
func hasCycle(head *ListNode) bool {
if head == nil || head.Next == nil {
return false
}
slow, fast := head, head.Next
for slow != fast {
// 只判断 fast 就可以,因为它走的快
if fast == nil || fast.Next == nil {
return false
}
slow = slow.Next
fast = fast.Next.Next
}
return true
}
type ListNode struct {
Val int
Next *ListNode
}