环形链表-力扣

news2024/11/16 0:25:47

一、题目描述

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 

二、题解 

解题思路:

快慢指针,即慢指针一次走一步,快指针一次走两步,两个指针从链表起始位置开始运行,如果链表带环,则一定会在环中相遇,否则快指针率先走到链表的末尾。

扩展:

 1、为什么快指针每次走两步,慢指针走一步可以?

假设链表带环,两个指针最后都会进入环,快指针先进环,慢指针后进环。当慢指针刚进环时,可能就和快指针相遇了,最差情况下两个指针之间的距离刚好就是环的长度。此时,两个指针每移动一次,之间的距离就缩小一步,不会出现每次刚好是套圈的情况,因此:在慢指针走到一圈之前,快指针肯定是可以追上慢指针的,即相遇。  

2、快指针一次走3步,走4步,...n步行吗? 

所以解决该题时,我们使用快慢指针,即慢指针一次走一步,快指针一次走两步,两个指针从链表起始位置开始运行,如果链表带环,则一定会在环中相遇。

三、代码 

public class Solution {
    public boolean hasCycle(ListNode head) {
        ListNode fast = head;
        ListNode slow = head;
        while (fast != null && fast.next !=null) {
            fast = fast.next.next;
            slow = slow.next;
            if(fast == slow) {
                return true;
            }
        }
        return false;
    }
}

另一种写法:

 public boolean hasCycle2(ListNode head) {
        ListNode fast = head;
        ListNode slow = head;
        while (fast != null && fast.next !=null) {
            fast = fast.next.next;
            slow = slow.next;
            if(fast == slow) {
                break;
            }
        }
        if (fast == null||fast.next == null) {
            return false;
        }
        return true;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1143081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows相关知识

目录 window用户管理 前言 SID 内置账户 与使用者关联的 与Windows组件关联的 用户相关命令 查看命令 用户管理 windows用户组 内置组账户 需要人为添加进入的组 动态包含成员的组(符合某种条件自动进入的) 管理组命令 NTFS权限 前言 常…

AFsim 三维地图部署

1.打开三维地图 点击上面菜单栏的地球,打开三维地图,或者按快捷键f4,弹出三维地球,如下图: 2.三维地图设置平台 在地球上任意位置,右击选择创建平台,弹出创建平台窗口,输入平台名称…

docker的安装部署nginx和mysql

小白自己整理,如有错误请指示! 自我理解:docker就是把应用程序所用的依赖程序,函数库等相关文件打包成镜像文件,类似系统光盘,然后可以在任意电脑上安装使用(方便运维人员部署程序)…

设计模式面试知识点总结

文章目录 设计原则常用设计模式单例模式1. 饿汉式2. 懒汉式3. 双重检测 工厂方法模式(简单工厂、工厂方法、抽象工厂)简单工厂静态工厂工厂方法模式抽象工厂模式 策略模式责任链模式 设计原则 标记设计模式原则名称简单定义OCP开闭原则对扩展开放&#…

C生万物 | 从浅入深理解指针【第一部分】

C生万物 | 从浅入深理解指针【第一部分】 文章目录 C生万物 | 从浅入深理解指针【第一部分】一、内存和地址1.1 内存1.2 究竟该如何理解编址 二、指针变量和地址2.1 取地址操作符(&) 三、指针变量和解引用操作符(*)3.1 指针变…

①【数据库操作】 MySQL数据库的查询、创建、删除、使用。

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 目录 数据库相关概念数据库的查询、创建、删除…

UI组件库基础

UI组件库 全局组件* 全局注册组件 & 并且使用了require.context 模块化编程 & webpack打包 const install(Vue)>{const contextrequire.context(.,true,/\.vue$/)context.keys().forEach(fileName>{const modulecontext(fileName)Vue.component(module.default.n…

【MySQL】并发事务产生的问题及事务隔离级别

先来复习一下事务的四大特性: 原子性(Atomicity):事务是不可分割的最小操作单位,事务中的所有操作要么全部执行成功,要么全部失败回滚,不能只执行其中一部分操作。一致性(Consisten…

vue2组件库-上传组件

vue2组件库 上传组件 核心思路:监控整个上传的流程 上传成功 上传失败 类型:拖拽 多个文件上传 上传必备属性 & 钩子属性 跟上传强关联的属性,上传必备的字段 name: 提交的那个formData字段名 action:ajax接口路径 limit&…

如何中断一个正在运行的线程?

线程 线程是系统级别的概念,在 Java 里面实现的线程,最终的执行和调度都是由操作系统来决定的,JVM 只是对操作系统层面的线程做了一层包装而已。所以我们在 Java 里面通过 start 方法启动一个线程的时候,只是告诉操作系统这个线程…

R语言入门看这一章就够了(上)

目录 一、R的基础 1.1、R的安装 1.2、牛刀小试 1.3、线性关系实例 1.4、工作空间 1.5、R包的使用 包的安装 结果的重用 二、R数据集 2.1、向量 2.2、矩阵 2.3、数组 2.4、数据框 2.5、列表 三、R的常用命令 四、list列表详解 五、数据源导入方法 5.1、键盘输…

黔院长 | 黄帝内经:人有四经十二从!

"人有四经十二从"这句话出自《黄帝内经素问》,“四经”指的是与四时相应的正常脉象,也是指四个主要经络:太阳经、少阳经、太阴经和少阴经。在中医理论当中这些经络被认为是人体气血运行的通道。 而“十二从”则表示人体的十二个经脉…

VulnHub Metasploitable-2

一、信息收集 nmap扫描 访问80端口 二、漏洞利用 1.漏洞一 1.vsftpd 2.3.4(CVE-2011-2523) 2.msf msf6 > search vsftpd msf6 > use 0 msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set rhosts 192.168.103.189 msf6 exploit(unix/ftp/vs…

ATV32变频器在堆垛机应用

一、机型介绍: 目前国内物流行业发展速度很快,特别是在自动仓库这一块,自动仓库用的最多是堆垛机,自动仓库目前驱动用得基本上变频器。品牌基本是丹佛斯、日系及其他等重载系列变频器。设备主要包括:提升机、货叉及行…

【Java题】输出基本数据类型的最大值和最小值,以及float和double的正无穷大值和负无穷大值

一:代码 public class Test {public static void main(String[] args) {//输出byte型的最大值与最小值System.out.println(Byte.MAX_VALUE);System.out.println(Byte.MIN_VALUE);//输出short型的最大值与最小值System.out.println(Short.MAX_VALUE);System.out.pri…

2023-2024 年最佳 6 款数据恢复软件免费在线下载

如果您正在寻找在线数据恢复工具来帮助自己摆脱数据丢失的麻烦,这篇文章可以为您提供帮助。我们讲解如何免费在线恢复数据,并从兼容性、适用性、易用性、价格等角度分享了市场上六款著名的数据恢复软件。每个在线恢复工具都是安全的,并且可以…

植物大战僵尸 forMac/Windows系统中文版:一场惊心动魄的生存之战

在充满惊喜与挑战的《植物大战僵尸》游戏中,一场奇妙的生存之战正等待着你。为了保护你的大脑,你必须组建一支植物军队,利用各种独特的植物和能力,抵御一波又一波的僵尸大军。现在就让我们深入了解这款引人入胜的游戏,…

【C++】Linux下如何查看opencv的版本

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

Bootstrap的咖啡网站实例代码阅读笔记

目录 01-index.html的完整代码02-图片可以通过类 rounded-circle 设置为圆形显示03-<li class"nav-item mt-1 a">中&#xff0c;类mt-1是什么意思&#xff1f;类a又是什么意思&#xff1f;04-href"javascript:void(0);"是什么意思&#xff1f;05-类f…

Java 浅拷贝会带来的问题

Java 浅拷贝会带来的问题 一&#xff0c;常见问题 Java 中的浅拷贝是指在对象拷贝时&#xff0c;只复制对象的引用&#xff0c;而不是对象本身。这意味着浅拷贝会导致多个对象共享同一块内存空间&#xff0c;当一个对象修改共享内存时&#xff0c;其他对象也会受到影响。 下…