95 快慢指针解决环形链表

2024-01-03 15:11:24

问题描述:给定一个链表,判断表中是否有环,为了表示给定链表中的环,我们使用整数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;
}

文章来源:https://blog.csdn.net/qq_52299902/article/details/135361319
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。