题解 | #判断链表中是否有环#
判断链表中是否有环
https://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9
package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
*
* @param head ListNode类
* @return bool布尔型
*/
func hasCycle( head *ListNode ) bool {
if head == nil || head.Next == nil{
return false
}
// write code here
slow :=head
fast := head.Next
for fast !=nil && fast.Next !=nil{
if slow == fast{
return true
}
slow = slow.Next
fast = fast.Next.Next
}
return false
}
在这个函数中,我们使用了两个指针:slow 和 fast。slow 指针每次移动一个节点,而 fast 指针每次移动两个节点。如果链表中存在环,那么 fast 指针最终会追上 slow 指针,此时函数返回 true。如果链表中没有环,fast 指针会先到达链表的尾部,函数返回 false。
查看11道真题和解析