【算法】环形链表 - 遍历/双指针

题目

给定一个链表,判断链表中是否有环,并返回结果。

原理

遍历

声明一个Set,遍历链表放入Set,如果放入失败,说明有环。

双指针

声明一个快指针和一个慢指针,快指针每次移动两步,慢指针移动一步,如果两指针相等则说明有环。

代码

遍历
    public static void main(String[] args) {ListNode listNode5 = new ListNode(5, null);ListNode listNode4 = new ListNode(4, listNode5);ListNode listNode3 = new ListNode(3, listNode4);ListNode listNode2 = new ListNode(2, listNode3);ListNode listNode1 = new ListNode(1, listNode2);listNode5.next = listNode2;System.out.println(hasCircleByFor(listNode1));}private static boolean hasCircleByFor(ListNode head) {Set<ListNode> nodeSet = new HashSet<>();while (head != null) {if (!nodeSet.add(head)) {return true;}head = head.next;}return false;}
双指针
    public static void main(String[] args) {ListNode listNode5 = new ListNode(5, null);ListNode listNode4 = new ListNode(4, listNode5);ListNode listNode3 = new ListNode(3, listNode4);ListNode listNode2 = new ListNode(2, listNode3);ListNode listNode1 = new ListNode(1, listNode2);listNode5.next = listNode2;System.out.println(hasCircleByTwoPointer(listNode1));}private static boolean hasCircleByTwoPointer(ListNode head) {if (head == null || head.next == null) {return false;}ListNode slow = head;ListNode fast = head.next;while (slow != fast) {if (fast == null || fast.next == null) {return false;}slow = slow.next;fast = fast.next.next;}return true;}

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

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

相关文章

MySQL学习笔记(三)

1、insert插入多条数据 语法&#xff1a;insert into t_user(字段名1,字段名2...) values(值1,值2...),(值1,值2...),(值1,值2...)...; 2、快速创建表 原理&#xff1a;将一个查询结果当做一张表创建&#xff0c;可以完成表的快速复制。表创建出来&#xff0c;同时表中的数据…

【计算机毕业设计】——农产品销售系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

✔ ★Java项目——设计一个消息队列(二)

Java项目——设计一个消息队列 四. 项⽬创建五. 创建核⼼类创建 Exchange&#xff08;名字、类型、持久化&#xff09;创建 MSGQueue&#xff08;名字、持久化、独占标识&#xff09;创建 Binding&#xff08;交换机名字、队列名字、bindingKey用于与routingKey匹配&#xff09…

LLMs之ToolAlpaca:ToolAlpaca(通用工具学习框架/工具使用语料库)的简介、安装和使用方法、案例应用之详细攻略

LLMs之ToolAlpaca&#xff1a;ToolAlpaca(通用工具学习框架/工具使用语料库)的简介、安装和使用方法、案例应用之详细攻略 目录 ToolAlpaca的简介 0、《ToolAlpaca: Generalized Tool Learning for Language Models with 3000 Simulated Cases》翻译与解读 1、数据集列表 2…

前端代码规范 - 图片相关

本文是前端代码规范系列文章&#xff0c;将涵盖前端领域各方面规范整理&#xff0c;其他完整文章可前往主页查阅~ 在前端项目中&#xff0c;图片资源是构成网站视觉效果的重要元素。合理的图片使用规范不仅可以提高页面加载速度&#xff0c;还可以增强用户体验。本文将详细介绍…

基于arcgis /envi PCA(主成分分析)实现过程

基于arcgis /envi PCA(主成分分析)实现过程 1 提取研究范围 2对研究范围进行重采样 &#xff08;根据数据情况进行选做&#xff0c;如数据较大建议进行该步骤操作&#xff09; 3 对研究范围内数据进行归一化处理 4 将空值替换为0 5 对同期不同要素数据进行波段合成 对波段…

易备数据备份软件案例:昆山某电子元器件制造企业灾备方案

昆山某电子有限公司专注于生产和销售高品质的电子元器件&#xff0c;包括各种电容器、电感线圈、电阻器、二极管、晶体管等。产品广泛应用于各种电子设备和行业&#xff0c;包括&#xff1a;消费电子、通信设备、工业控制、汽车电子、航空航天、医疗器械等。 随着公司生产经营…

Yii2 路由美化访问需要加s

不得不说yii真是反人类&#xff0c;怪不得现在都不维护了&#xff0c;今天解析下路由美化下的路由访问问题。 设置main.php配置文件 urlManager > [enablePrettyUrl > true, // 启用 URL美化showScriptName > false, // 隐藏入口文件index.phpenableStrictParsing…

MySql数据库从0-1学习-第三天多表设计学习

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种: 一对多(多对一)多对多一对一 一对多 需求:根据需求,完成部门和员工表的设计 一对多,很多人会使用外键,…

如何分析 Java 开源项目源码?

准备深入分析一个 Java 开源项目的源码时&#xff0c;可以通过下面这些步骤和技巧&#xff0c;更系统地理解和分析项目源代码&#xff1a; 1. 确定分析目标和范围&#xff1a; 在开始分析之前&#xff0c;明确你的目标&#xff0c;确定你要深入了解的功能或模块。这有助于你有…

零基础转行网络安全,高薪梦想可以实现吗?

零基础转行网络安全&#xff0c;学会网络安全相关知识&#xff0c;可以从事以下岗位&#xff1a; 1、安全运维&#xff1a; 负责服务器及终端设备的维护 负责业务的安全风险评估和漏洞挖掘 负责安全事件的检查和实施 2、渗透测试 负责渗透测试、风险评估工作的实施 提供…

《web应用技术》第三次课后练习

实验目的&#xff1a; 1、springboot入门程序撰写并启动 2、使用postman练习参数的获取。 参考&#xff1a;Day04-10. Web入门-SpringBootWeb-快速入门_哔哩哔哩_bilibili

【星期计算】蓝桥杯

–> 因为这里是结果填空题&#xff0c;我们直接暴力用java自带的BigInteger类。 /*** 试题 A: 星期计算** 本题总分&#xff1a;5 分* 【问题描述】* 已知今天是星期六&#xff0c;请问20的22次方天后是星期几&#xff1f;* 注意用数字 1 到 7 表示星期一到星期日。* * 【答…

2024年在阿里云申请SSL证书多少钱?免费版不要钱,付费版352元/年

SSL证书是实现网站https访问必须购买的云安全类产品&#xff0c;以阿里云为代表的各大云服务商也都提供申请SSL证书服务&#xff0c;2024年阿里云既提供免费版的SSL证书&#xff0c;也有付费版的&#xff0c;最低只要352元/年。 一、阿里云申请免费版SSL证书申请流程&#xff…

中国平安金融壹账通交付管理中心总经理崔羽先生受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 中国平安金融壹账通交付管理中心总经理崔羽先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“项目管理成与败&#xff0c;人才是第一要素”。大会将于5月25-26日在北京举办&#xff0c;敬请关注&#xff01; 议题简要…

任推邦七款热门拉新项目,普通人逆袭路径,月入6个W!

任推邦 不扣量的项目拉新平台 1UC网盘 —网推 价格上涨行业置顶 &#xff0c;大厂项目 市场空白&#xff0c;预算充足&#xff0c;不限量 适合自媒体/抖快等渠道 上传下载不限速 2迅雷网盘—网推 官方核心服务商&#xff0c;大厂项目 群组内测&#xff08;新增转播收…

【生产实习-毕设】pyspark学生成绩分析与预测(上)

注意&#xff1a;数据由实习单位老师提供&#xff08;需要自行搜索下载&#xff09;&#xff0c;页面美化为下载模板。 项目介绍&#xff1a;前端页面输入影响成绩的属性&#xff0c;预测出成绩&#xff0c;并作可视化展示——属性对成绩的影响。使用python pyspark 进行数据预…

【Linux 学习】进程优先级和命令行参数!

1. 什么是优先级? 指定进程获取某种资源&#xff08;CPU&#xff09;的先后顺序&#xff1b; Linux 中优先级数字越小&#xff0c;优先级越高&#xff1b; 1.1 优先级和权限的区别&#xff1f; 权限 &#xff1a; 能不能做 优先级&#xff1a; 已经能了&#xff0c;但是获…

选择自动化工具是一个关键的决策过程

好的自动化软件测试工具&#xff0c;不仅可以有效的缩短全生命周期的交付周期&#xff0c;还可以提高测试的有效性&#xff0c;还可以保证更好的高质量的交付。工具的选型是一项重要的决策过程&#xff0c;工具的采用涉及到企业的效率、成本和长期发展。 1、需求分析 确组织希…

C语言结构体,成员地址高低位问题

写一个这样的 C 程序&#xff1a; #include <stdio.h> #include <stdint.h>typedef struct WTF {uint8_t a;uint8_t b;uint8_t c;uint8_t d; } WTF;int main() {WTF wtf;printf("hello world\n");printf("wtf.a addr %p\n", &(wtf.a));p…