LeetCode 环形链表+升级版环形链表

判断链表是否为环形链表
这道题我采用 哈希表的形式,注意哈希表的一个特点是如果元素已经存在则不能添加,见http://Java 数组与集合(List, Set, Map)获取长度与遍历操作
最初我采用动态数组的方式有些测试用例过不去,利用哈希表这个特性可以使用

java 复制代码
/**
 * 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> visitnode=new HashSet<ListNode>();  //哈希表存储访问过的结点
       while(head!=null){
            if(!visitnode.add(head)){
                return true;  //如果添加结点失败,就说明结点之前已经存在
            }
            
            head=head.next;
       }
       return false;
        
    }
}
环形链表Ⅱ:注意不允许修改链表,因此可以声明一个结点:
java 复制代码
/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode detectCycle(ListNode head) {
        Set<ListNode> visitnode=new HashSet<ListNode>();
        ListNode p=head;
        int flag=-1;
        while(p!=null){
            if(!visitnode.add(p)){
                return p;
            }

            p=p.next;
            flag++;

        }
        return null;
        
    }
}
相关推荐
小羊在睡觉1 小时前
力扣84. 柱状图中最大的矩形
后端·算法·leetcode·golang·go
3DVisionary2 小时前
蓝光三维扫描:医疗制造的精度焦虑怎么解
人工智能·算法·制造·蓝光三维扫描·医疗制造·三维检测·义齿检测
好评笔记2 小时前
机器学习面试八股——常用损失函数
人工智能·深度学习·算法·机器学习·校招
weixin_468466852 小时前
全局与局部注意力机制新手实战指南
人工智能·python·深度学习·算法·自然语言处理·transformer·注意力机制
sheeta19982 小时前
LeetCode 每日一题笔记 日期:2026.05.29 题目:3300. 最小元素
笔记·leetcode
_日拱一卒2 小时前
LeetCode:994腐烂的橘子
java·数据结构·算法·leetcode·深度优先
珂朵莉MM3 小时前
第七届全球校园人工智能算法精英大赛-算法巅峰赛产业命题赛第3赛季优化题--束搜索
人工智能·算法
Omics Pro3 小时前
首个!外源天然产物综合性代谢图谱
数据库·人工智能·算法·机器学习·r语言
voidmort4 小时前
3. 微调(Fine-tuning)与强化学习(RL)的核心思想
python·深度学习·算法
人道领域4 小时前
【LeetCode刷题日记】669.修剪二叉搜索树
开发语言·python·算法