import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return bool布尔型 */ public boolean hasCycle (ListNode head) { Set<Integer> seen = new HashSet<>(); // 哈希集合用于存储节点的值 while (head != null) { if (seen.contains(head.val)) { return true; // 如果节点的值已经存在于哈希集合中,则说明链表存在环 } seen.add(head.val); // 将节点的值添加到哈希集合中 head = head.next; // 移动到下一个节点 } return false; // 如果遍历完整个链表都没有找到重复的节点值,则说明链表没有环 } }
本题知识点分析:
1.链表
2.哈希
本题解题思路分析:
1.用哈希表进行去重判断,如果节点值有重复的话,返回ture
2.遍历完链表,没有找到重复值,返回false