问题描述:给定一个链表,判断表中是否有环,为了表示给定链表中的环,我们使用整数pos来表示链表尾链接到链表中的位置,如果pos是-1表示没有环。
快慢指针求解:定义一个慢指针和一个快指针,若两者相遇则一定有环,若快指针为null,则没有环。
public Boolean hasCircle(ListNode head)
{
ListNode low=head;
ListNode fast=head;
while(fast==null)
{
low=low.next;
fast=fast.next.next;
if(low==fast){return true;}
}
???????return false;
}
set求解:遍历过程中一直将ListNode放入集合中,若出现重复则返回true,若遍历到null则返回false。
public Boolean hasCircle(ListNode head)
{
Set<ListNode>set=new HashSet<>();
ListNode first=head;
while(first!=null)
{
if(set.contains(first)){return true;}
else{
set.add(first);
}
first=first.next;
}
???????return false;
}