题解 | #判断链表中是否有环#
判断链表中是否有环
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 {
// write code here
// write code here
// 环的定义,遍历过的节点,出现在某个节点的next。
// 1. 需要记录遍历过的节点
// 2. 能够确认next出现过
// 假如某个节点的next和current的next一致。
// 对链表进行翻转,最后,如果是有环的,最后的节点等于开始的节点,如果没有环那么会遍历结束。
reverseHead := &ListNode{}
reverseHead.Next = head
prev := reverseHead
cur := head
// 遍历节点
for cur != nil {
temp := cur.Next
cur.Next = prev
prev = cur
cur = temp
if cur == reverseHead {
return true
}
}
return false
}