算法题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
}

  

posted @ 2020-06-19 13:55  mxstar  阅读(17)  评论(0)    收藏  举报