如何用Java实现判断一个链表是否有环

2023-05-16

设置一个快指针和一个慢指针,快指针一次走两步,慢指针一次走一步。如果该链表没有环,快指针会先指向NULL,可据此判断链表没有环结构;如果该链表有环,则快指针肯定先进环,然后慢指针进环,此时形成一个追击问题,快指针追慢指针,并且一次追一步。也就是说,快指针和慢指针之间的差距每走一步缩小一步,因此不会发生快指针追击一圈跳过慢指针重新追击的情况。换句话说,一旦慢指针进环,快指针肯定在一圈内追上慢指针。实例代码如下:

public class Ex2 {
    public static void main(String[] args) {

        Node2 node1 = new Node2("1", null);
        Node2 node2 = new Node2("2", node1);
        Node2 node3 = new Node2("3", node2);
        Node2 node4 = new Node2("4", node3);
        Node2 node5 = new Node2("5", node4);
        Node2 node6 = new Node2("6", node5);
        Node2 node7 = new Node2("7", node6);

        // 7 -- 6 --5  --4  --3  --2  --1
        node1.next = node5;

        Node2 f = node7;
        Node2 l = node7;

        while (f.next != null && f.next.next != null){
            f = f.next.next;
            l = l.next;
            if (f == l){// 快指针和慢指针相遇, 必定意味着有环
                break;
            }
        }

        if (f.next != null && f.next.next != null){
            System.out.println("有环");
        } else {
            System.out.println("没有环");
        }
    }
}

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

如何用Java实现判断一个链表是否有环 的相关文章

  • MySQL万字精华总结!你连基础的JVM运行时内存布局都忘了?含面试题+答案

    前言 Netty 是一款基于 Java 的网络编程框架 xff0c 能为应用程序管理复杂的网络编程 多线程处理以及并发 Netty 隐藏了样板和底层代码 xff0c 让业务逻辑保持分离 xff0c 更加易于复用 使用 Netty 可以得到一
  • 获取Spring中@PathVariable注解里带点的完整参数

    x1f680 优质资源分享 x1f680 学习路线指引 xff08 点击解锁 xff09 知识定位人群定位 x1f9e1 Python实战微信订餐小程序 x1f9e1 进阶级本课程是python flask 43 微信小程序的完美结合 xf
  • 使用 oh-my-posh 美化 windows terminal,让其接近oh-my-zsh

    x1f680 优质资源分享 x1f680 学习路线指引 xff08 点击解锁 xff09 知识定位人群定位 x1f9e1 Python实战微信订餐小程序 x1f9e1 进阶级本课程是python flask 43 微信小程序的完美结合 xf
  • 数据结构实验报告-01

    一 实验目的和要求 要求 1 按照群文件中的报告内容 xff0c 首先进行设计工作并加以文字记录 xff0c 然后编写代码 xff0c 测试 xff0c 分析 xff0c 再二次完善报告 xff0c 形成完整的文字记录 2 再次强调 xff
  • flutter面试题,覆盖所有面试知识点,面试必会

    为什么想跳槽 xff1f 简单说一下当时的状况 xff0c 我在这家公司做了两年多 xff0c 这两年多完成了一个大项目 xff0c 作为开发的核心主力 xff0c 开发压力很大 xff0c 特别是项目上线前的几个月是非常辛苦 xff0c
  • 删除docker容器中的文件,你还看不明白?

    原理讲解前 xff0c 先看一个最经典的业务场景 xff0c 如开发一个电商网站 xff0c 要实现支付订单的功能 xff0c 流程如下 xff1a 创建一个订单之后 xff0c 如果用户立刻支付了这个订单 xff0c 我们需要将订单状态更
  • 实战Compose——做个简洁却不简单的星球打卡App

    Focus Focus是一款帮助你集中的app 为自己的目标建立星球 xff0c 将时间投入在上面 花在星球上的每一分钟都会被记录 xff0c 每颗星球可以定制颜色与外观 为了贯彻简单干净不让人分心的设计理念 xff0c app采用白灰为主
  • android 截屏实现的几种方式

    Android 截屏分为四种 xff1a View 截屏 WebView 截屏 系统截屏 和 adb 截屏 1 View 截屏 View 截图是将当前 View 界面截取下来 xff0c 而对于屏幕上其他信息比如 xff1a 状态栏或其他应
  • iBatis使用log4j2输出日志

    原文链接这里 iBatis是一个老项目 xff0c 2 3 4 726版本发布之后 xff0c 项目改名为MyBatis xff0c 项目主页目前为http mybatis github io 我从08年开始接触iBatis xff0c 一
  • Android搭建无线调试环境

    ADB 安卓官网对此工具的介绍 Android 调试桥 adb 是一种功能多样的命令行工具 xff0c 可让您与设备进行通信 adb 命令可用于执行各种设备操作 xff08 例如安装和调试应用 xff09 xff0c 并提供对 Unix s
  • Golang:使用 FCM 实现推送通知

    firebase和设备令牌基本介绍 设备令牌是主要参赛者 xff0c 负责推送通知 这不是一个花哨的词 xff0c 它只是每个设备唯一的 id 当我们安装任何应用程序时 xff0c 我们设备的唯一令牌会存储在他们的服务器上 xff0c 他们
  • 适用于 Flutter 的 AWS Amplify

    关于Amplify Amplify 于 2017 年推出 xff0c 是面向移动和前端 Web 开发人员的端到端 AWS 解决方案 它是服务和工具的组合 xff0c 可以一起使用或单独使用 xff0c 以帮助移动和前端开发人员使用 AWS
  • Android Native 异常捕获库

    现状 发生native异常时 xff0c 安卓系统会将native异常信息输出到logcat中 xff0c 但是java层无法感知到native异常的发生 xff0c 进而无法获取这些异常信息并上报到业务的异常监控系统 业务部门可以快速实现
  • 从 ExoPlayer 源码分析视频无法播放问题

    What happened 最近负责的项目中碰到了在部分手机上无法播放视频的问题 xff0c 我们接入的是 ExoPlayer 三方库 xff0c 从 log 看出现的是 Decoder init failed xff0c 也是网上常见的
  • Android Xposed 框架

    一 Xposed框架简介 Xposed是Android平台上的一个常用的HOOK框架 xff0c 可以在不改变程序源代码的前提下 xff0c 影响程序的运行 一个支持Xposed的Android应用程序被称为一个Xposed模块 xff0c
  • 干了3年Android开发,2023年我离职了...

    今天在网上刷到一个帖子 xff0c 说Android岗 xff0c 在公司呆了三年 xff0c 由于疫情原因 xff0c 公司效益不是很好 xff0c 加上自己的技术一直停留在应用开发 xff0c 在公司可有可无 xff0c 被公司裁后找不
  • 新来的23岁Android开发上来秀了波操作,把几个老员工看傻了

    春招了 xff0c 公司来了个小伙子 xff0c 一看简历 xff0c 嘿 xff1f 22岁 xff0c 这不刚毕业的小毛孩子嘛 xff0c 结果没想到人家上来就把现有项目的性能优化了一遍 xff0c 给公司节省了一半的成本 xff0c
  • 程序员因薪资低拒绝offer,HR恼羞成怒,网友瞬间炸翻了..

    一名程序员员在求职过程中 xff0c 碰到一位薪资谈不拢就恼羞成怒的HR xff0c 并说出 估计你一辈子就是个程序员 这样的话 从这位开发和HR的聊天内容中 xff0c 我们可以看到二者的谈薪过程 首先 xff0c HR开出15k的薪资
  • Linux C系统编程——使用信号量实现生产者,消费者问题(两分钟搞明白)

    信号量和信号不是同一个东西 信号量 xff1a 指的是semaphore xff0c 相当于设置初始值为N的互斥量 xff0c N就表示同时访问的线程数 xff08 针对的是线程同步问题 xff09 信号 xff1a 指的是用来实现进程与进
  • Java线程状态中BLOCKED和WAITING有什么区别?

    刚才在看CSDN的问答时 xff0c 发现这个问题 原问题的作者是在观察jstack的输出时提出的疑问 xff0c 那么BLOCKED和WAITING有什么区别呢 xff1f 答复在JDK源码中可以找到 xff0c 如下是java lang

随机推荐

  • 随记-创建sftp用户并分配操作目录权限

    背景 xff1a 客户需要到我服务器上存取文件 xff0c 单独给他创建sftp账号 步骤 1 创建一个sftp用户 xff0c 名称暂定为sjzx sftp user xff0c 并修改密码 span class token functi
  • 【idea导入外部项目目录结构显示不完整解决方案】与【Maven配置永久生效方案】

    一 idea导入外部项目目录结构显示不完整 idea导入外部项目时 xff0c 目录结构显示不完整 xff0c 如下图所示 可能的情况即解决方案如下 xff1a 1 等待即可 xff1b idea正在下载项目所需依赖 xff0c 等待pom
  • Kotlin实现登录界面的密码显示与隐藏

    kotlin实现android登录界面 1布局的设计 xff0c 密码的显示和隐藏2主程序的监听事件的绑定 1布局的设计 xff0c 密码的显示和隐藏 span class token prolog lt xml version 61 34
  • Ubuntu18.04 设置 root 用户登录

    1 Ubuntu root用户 初始是没有密码的 xff0c 所以在使用之前最好先设置密码 xff0c 在终端使用以下指令 sudo passwd root 2 输入下方指令 xff0c 修改文件内容 xff0c 设置root用户登录 cd
  • 【Jetpack】学穿:ViewBinding → 视图绑定

    0x0 Jetpack简介 手机厂商还没卷完Android 12 xff0c Android 13 就悄然声息地来了 xff0c 距离Google 2008年9月22日发布Android 1 0 xff0c 已过去13个年头 历经13年的打
  • 如何做影视解说短视频?素材文案+配音,每一个都不能少

    如何做影视解说短视频 xff1f 素材文案 43 配音 xff0c 每一个都不能少 很多小伙伴都喜欢问我如何才能做出来一个影视解说短视频 xff0c 其实并没有我们想象中的那么难 只是如果想要做成大号 xff0c 变成拥有六千多万粉丝 xf
  • 如何抓住用户痛点进行短视频文案创作?三个小方法可运用

    如何抓住用户痛点进行短视频文案创作 xff1f 三个小方法可运用 众所周知 xff0c 短视频的文案创作 xff0c 其实也是需要抓住用户痛点的 xff0c 而只要能够做到这一点 xff0c 吸引用户其实就非常简单了 所谓抓住用户痛点 xf
  • 短视频文案怎么写才能吸引用户?幽默不是唯一,触发情感也很重要

    短视频文案怎么写才能吸引用户 xff1f 幽默不是唯一 xff0c 触发情感也很重要 很多做短视频的小伙伴们都会烦恼一件事 xff0c 那就是不知道短视频的文案究竟要怎么写才能够顺利的吸引到用户 很多小伙伴认为幽默的文案才能吸粉引流 xff
  • 短视频运营小技巧,标题文案都很重要,还有配音也别忘记

    短视频运营小技巧 xff0c 标题文案都很重要 xff0c 还有配音也别忘记 想要让自己的短视频获得高高的流量 xff0c 那么是离不开运营小技巧的 xff0c 那么今天我们就来分享三个短视频运营的小技巧 xff0c 标题文案都很重要 xf
  • java中怎样获取绝对路径,增加代码的灵活性?

    介绍获取绝对路径的方法 xff0c 一种是获取普通文件 xff0c 另一种是只能获取后缀名为 properties的文件 第一种 xff1a 在IO流读取文件时 xff0c 我们往往会通过直接写文件名的方式取 xff0c 例如 xff1a
  • tomcat学习笔记之catalina.sh

    本文基于tomcat 8 0 18版本的源码实现写作 xff0c 随tomcat7发布的脚本可能会有些差异 最早是在07年部门培训的时候接触到tomcat xff0c 但后来的工作都和web开发不相关 xff0c 所以没有积累多少使用经验
  • 24届春招百度暑假实习笔试第二题

    题干 解答 该题目在解决的时候 xff0c 需要发现就是对于相同的字符我们应该放在一起 xff0c 这样在进行修改的时候 xff0c 对其他字符的影响才会小 然后连续相同字符个数 和 组成的回文子串数目 它们的通解为 an 61 n 2 4
  • (二十三)操作系统-多生产者·多消费者问题

    文章目录 一 问题描述二 问题分析1 关系分析2 整理思路 三 实现1 代码2 如果不要互斥信号量3 将盘子 xff08 缓冲区 xff09 容量设为2 四 总结 一 问题描述 桌子上有一只盘子 xff0c 每次只能向其中放入一个水果 爸爸
  • 事件循环机制的理解

    点此链接
  • 【快速学习vue3】

    点此链接
  • 配置FTP协议 并且连接交换机进行文件传输

    配置FTP连接交换机进行文件传输 文章目录 配置FTP连接交换机进行文件传输前言一 FTP文件传输协议1 配置环境电脑验证 xff08 使用CMD直接ftp 43 进行连接的设备IP xff09 前言 本文为网络工程师培训中的学习笔记 xf
  • Mysql-最左前缀法则以及索引失效情况

    最左前缀法则 如果索引了多列 xff08 联合索引 xff09 xff0c 要遵守最左前缀法则 最左前缀法则指的是查询从索引的最左列开始 xff0c 并且不跳过索引中的列 如果跳跃某一列 xff0c 索引将会部分失效 后面的字段索引失效 以
  • Spring框架开发流程

    Spring框架是什么 xff1f Spring是一个开源框架 xff0c Spring是于2003 年兴起的一个轻量级的Java 开发框架 xff0c 由Rod Johnson 在其著作Expert One On One J2EE Dev
  • HJ71 字符串通配符

    描述 问题描述 xff1a 在计算机中 xff0c 通配符一种特殊语法 xff0c 广泛应用于文件搜索 数据库 正则表达式等领域 现要求各位实现字符串通配符的算法 要求 xff1a 实现如下2个通配符 xff1a xff1a 匹配0个或以上
  • 如何用Java实现判断一个链表是否有环

    设置一个快指针和一个慢指针 xff0c 快指针一次走两步 xff0c 慢指针一次走一步 如果该链表没有环 xff0c 快指针会先指向NULL xff0c 可据此判断链表没有环结构 xff1b 如果该链表有环 xff0c 则快指针肯定先进环