算法题141:判断链表是否有环
思路:快慢指针
- 首先判断链表是否为空,或者链表下一节点是否为空,为空直接返回false;
- 采用快慢指针,快指针遍历到头,为空,没有环,快指针等于慢指针,存在环,退出循环
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func hasCycle(head *ListNode) bool {
if head == nil || head.Next == nil {
return false
}
fast := head
low := head
for ; fast != nil ; {
fast = fast.Next
if fast == low {
return true
}
if fast == nil {
return false
}
fast = fast.Next
low = low.Next
}
return false
}

浙公网安备 33010602011771号