判断链表中是否有环

判断链表中是否有环

leetcode 141 环形链表
给你一个链表的头节点 head ,判断链表中是否有环。

快慢指针解法。快慢指针的特点是:初始化时,慢的指向第一个,快的指向下一个,移动的时候,慢的每次一步,快的每次两步,移动过程中,记住判断有没有下一步。

func hasCycle(head *ListNode) bool {
    if head == nil || head.Next == nil {
        return false
    }
    slow, fast := head, head.Next
    for slow != fast {
        // 只判断 fast 就可以,因为它走的快
        if fast == nil || fast.Next == nil {
            return false
        }
        slow = slow.Next
        fast = fast.Next.Next
    }
    return true
}

type ListNode struct {
    Val  int
    Next *ListNode
}

发表回复