题目:
给定一个链表,判断链表中是否有环。
pos 表示链表尾连接到链表中的位置(索引从 0 开始)
示例1:
输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。
示例2:
输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。
思路:
- 首先判断head不可以为nil
- 对于head.Next节点为nil的返回false
- 对head做赋值,分别给a和b;让a走两步,b走一步;只要链表存在闭环,那们他们必然相遇
- 循环的条件是先到达终点的a不为nil
type ListNode struct {
Val int
Next *ListNode
}
func hasCycle(head *ListNode) bool {
if head==nil {
return false
}
a:=head
b:=head
for a!=nil {
a=a.Next //a先走一步
if a==nil{ //表示a到达了终点,还是没有相遇,就返回false
return false
}
if a==b{
return true
}
a=a.Next
b=b.Next
}
return false
}

555

被折叠的 条评论
为什么被折叠?



