环形链表
2026年3月27日小于 1 分钟
环形链表
使用的方法
HashSet:使用一个哈希集合来存储已经访问过的节点。HashSet.add()方法:在遍历链表时,尝试将当前节点添加到集合中。如果添加失败(即返回false),说明当前节点已经存在于集合中,链表存在环,返回true。
解题思路
- 首先,创建一个空的哈希集合
set。 - 然后,遍历链表,对于每个节点,尝试将其添加到集合
set中。 - 如果添加成功,继续遍历下一个节点。
- 如果添加失败,说明当前节点已经存在于集合中,链表存在环,返回
true。 - 如果遍历完整个链表后没有发现任何节点重复,说明链表不存在环,返回
false。
代码实现
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public boolean hasCycle(ListNode head) {
Set<ListNode> set = new HashSet<ListNode>();
while(head != null){
if(!set.add(head)){
return true;
}
head = head.next;
}
return false;
}
}