判断链表中是否有环,java,算法练习

2023-05-16

判断链表中是否有环,java

在这里插入图片描述
给定一个链表,判断链表中是否有环。如果存在环,返回true,否则返回false。

package leecode刷题数据结构与算法;

import java.util.HashSet;
import java.util.Set;

public class 判断是否存在环 {
// 定义链表
    static class ListNode{
        int val;
        ListNode next;
        public ListNode(int val,ListNode next){
            this.val=val;
            this.next=next;
        }
    }

    public static void main(String[] args){
        ListNode node5=new ListNode(5,null);
        ListNode node4=new ListNode(4,node5);
        ListNode node3=new ListNode(3,node4);
        ListNode node2=new ListNode(2,node3);
        ListNode node1=new ListNode(1,node2);

         node5.next=node4;
         System.out.println(hasCycle(node1));
        System.out.println(hasCycle2(node1));
    }

    //方法一,用set集合
    public static boolean hasCycle(ListNode head){
            Set<ListNode> set=new HashSet<ListNode>();
            while(head!=null){
                //如果向set集合中插入当前节点失败,证明存在环。
                if(!set.add(head)){
                    return true;
                }
                head=head.next;
            }
            //遍历完链表却没有发现环,返回false
          return false;
    }

   /* 方法二,双指针法,两个指针分别指向两个结点,
    如果快、慢指针相重合,说明有环存在。*/
    public static boolean hasCycle2(ListNode head) {
        if(head==null||head.next==null){
            return false;
        }
        ListNode slow=head;
        ListNode quick=head.next;
        while(slow!=quick){
            if(quick==null||quick.next==null){
                return false;
            }
            slow=slow.next;
            quick=quick.next.next;
        }
        return true;
    }
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

判断链表中是否有环,java,算法练习 的相关文章

随机推荐

  • 如何抓取log

    一 Catcher log Catcher是 MTK 提供的功能机上一个功能比较强大的一个 log 工具 Catcher log 一般情况下使我们使用起来最多也最方便的一种 xff0c 不用跳线 xff0c 连接上 USB 就行 Catch
  • android studio (record audio)一些问题记录

    2022 03 29 19 23 16 253 1659 1706 E Request requires android permission RECORD AUDIO 2022 03 29 19 23 16 253 1659 1706 E
  • 向量的点乘和叉乘

    向量是由n个实数组成的一个n行1列 xff08 n1 xff09 或一个1行n列 xff08 1n xff09 的有序数组 一 向量的点乘 也叫向量的内积 数量积 xff0c 对两个向量执行点乘运算 xff0c 就是对这两个向量对应位一一相
  • C语言 生产者消费者问题

    目录 生产者消费者问题算法设计实现源程序测试日志总结 生产者消费者问题 算法设计 实现 1 编写所需头文件 span class token macro property span class token directive keyword
  • 操作系统-进程同步:生产者-消费者问题

    文章目录 进程同步 xff1a 生产者 消费者问题问题描述实验环境输入输出测试数据实验设计数据结构系统框架图流程图 实验结果与分析结果展示与描述结果分析总结 源代码 进程同步 xff1a 生产者 消费者问题 问题描述 以生产者 消费者模型为
  • 《动手学习深度学习》预备知识——自动求导

    自动微分 正如我们在 numref sec calculus中所说的那样 xff0c 求导是几乎所有深度学习优化算法的关键步骤 虽然求导的计算很简单 xff0c 只需要一些基本的微积分 但对于复杂的模型 xff0c 手工进行更新是一件很痛苦
  • Ubuntu—root用户权限设置

    Ubuntu root用户权限设置 本人ubuntu版本 xff1a 18 04 xff08 其他版本设置步骤相同 xff09 Step1 获得临时root权限 xff08 1 xff09 terminal中输入命令 xff1a sudo
  • matlab 自写 自适应中值滤波 matlab自适应中值滤波算法

    一 自适应中值滤波 xff08 代码 xff09 function aOut 61 stPlus aIn f1 f2 st stMax 这仅仅是 AdaMedFilter 自适应中值滤波函数 的子函数 这仅仅是一个附属函数 功能片段 xff
  • 使用@RequestBody传递多个不同对象

    64 RequestBody 主要用来接收前端传递给后端的json字符串中的数据的 请求体中的数据的 xff1b GET方式无请求体 xff0c 所以使用 64 RequestBody接收数据时 xff0c 前端不能使用GET方式提交数据
  • 解决No converter for [class org.jeecg.common.api.vo.Result] with preset Content-Type ‘multipart/form-d

    我们在下载文件的时候 xff0c 会对contentType进行设置 比如我这里设置的是 xff1a response span class token punctuation span span class token function
  • Linux安装Nginx(超详细步骤)

    1 xff0c 进入官网下载Nginx资源 官网下载 xff1a http nginx org en download html 2 xff0c 资源下载 xff08 因为是在Linux安装 xff0c 所以我下载Linux安装的资源包 x
  • Linux安装tomcat(超详细步骤)

    1 xff0c 安装前置条件 安装Tomcat需要先安装jdk xff0c 没有安装jdk的 xff0c 先移步到这里安装jdk xff0c 详见参考文章 2 xff0c 下载所需压缩包 xff0c 上传到服务器 官网下载地址 xff1a
  • 解决虚拟机启动报:此主机支持AMD-V,但AMD-V处于禁用状态

    开启VMware虚拟机弹出以下异常 解决方法 xff1a 将SVM Mode设置成允许 解决步骤 xff1a 1 xff0c 将电脑关机 xff0c 然后进行启动 xff0c 启动过程中多按delete xff08 f1或者f2 xff0c
  • 编写Shell脚本监控jar运行状态

    1 xff0c 创建一个shell文件 xff0c 编辑内容如下 span class token shebang important bin bash span span class token assign left variable
  • java使用freemarker实现word下载

    freemarker 简单示例1 xff0c 引入依赖2 xff0c 引入依赖包3 xff0c 创建所需要的模板3 1 xff0c 新建一个word文档3 2 xff0c 将word模板另存为xml格式 4 xff0c 代码实现5 xff0
  • 本地使用IIS快速搭建一个属于自己的网站,并发布公网访问「无需购买云服务器」

    文章目录 1 前言2 Windows网页设置2 1 Windows IIS功能设置2 2 IIS网页访问测试 3 Cpolar内网穿透3 1 下载安装Cpolar内网穿透3 2 Cpolar云端设置3 3 Cpolar本地设置 4 公网访问
  • Datawhale数据分析第一章第二节:Pandas基础

    复习 xff1a 数据分析的第一步 xff0c 加载数据我们已经学习完毕了 当数据展现在我们面前的时候 xff0c 我们所要做的第一步就是认识他 xff0c 今天我们要学习的就是了解字段含义以及初步观察数据 1 第一章 xff1a 数据载入
  • Linux下定时任务Crontab执行jar文件

    一 安装jdk 具体操作参照 Linux下安装jdk1 8并配置环境变量 我是采用yum源安装 xff0c 按照成功后如下 查看JAVA HOME路径结果如下 所以我的JAVA HOME路径如下 usr lib jvm java 1 8 0
  • Windows Terminal美化:oh-my-posh配置记录

    Windows Terminal美化 xff1a oh my posh配置记录 前置 xff1a 安装Windows Terminal 43 powershell xff0c 打开终端 xff0c 默认路径为powershell 这个流程踩
  • 判断链表中是否有环,java,算法练习

    判断链表中是否有环 xff0c java 给定一个链表 xff0c 判断链表中是否有环 如果存在环 xff0c 返回true xff0c 否则返回false span class token keyword package span spa