题解 | #判断链表中是否有环#
判断链表中是否有环
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
。