JAVA练习294- 环形链表II
题目概览给定一个链表的头节点head返回链表开始入环的第一个节点。如果链表无环则返回null。如果链表中有某个节点可以通过连续跟踪next指针再次到达则链表中存在环。 为了表示给定链表中的环评测系统内部使用整数pos来表示链表尾连接到链表中的位置索引从 0 开始。如果pos是-1则在该链表中没有环。注意pos不作为参数进行传递仅仅是为了标识链表的实际情况。不允许修改链表。示例 1输入head [3,2,0,-4], pos 1输出返回索引为 1 的链表节点解释链表中有一个环其尾部连接到第二个节点。示例 2输入head [1,2], pos 0输出返回索引为 0 的链表节点解释链表中有一个环其尾部连接到第一个节点。示例 3输入head [1], pos -1输出返回 null解释链表中没有环。提示链表中节点的数目范围在范围[0, 104]内-105 Node.val 105pos的值为-1或者链表中的一个有效索引进阶你是否可以使用O(1)空间解决此题来源142. 环形链表 II - 力扣LeetCode解题分析方法一哈希集合用哈希集合存储遍历过的节点每次遍历判断即可。时间复杂度O(n)空间复杂度O(n)/** * 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) { SetListNode set new HashSet(); ListNode temp head; while(temp ! null) { if (set.contains(temp)) { return temp; } set.add(temp); temp temp.next; } return null; } }方法二快慢指针定义快慢指针一个遍历一个节点一个遍历两个节点如果存在环则两个指针一定会相遇。令头节点到环点的距离为 a从环点到相遇点的距离为 b环长为 c快指针转了 n 圈才相遇。因此可以得到快指针移动的距离为 a nc b。由于快指针的速度是慢指针的两倍因此移动距离也是两倍慢指针的距离为 a b则可以得到 a nc b 2 * ( a b ) 等价于 a b nc。慢指针当前位置是在 b再往前走 a 的距离就刚好一圈走到的位置刚好就是环点。因此我们再相遇时再定义一个指针从表头出发当该指针和慢指针相遇时慢指针刚好走完一圈指针刚好停留在环点。时间复杂度O(n)空间复杂度O(1)/** * 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) { ListNode a head, b head; int times; while(true) { if (a null || b null || b.next null) { return null; } a a.next; b b.next.next; if (a b) { break; } } ListNode c head; while(c ! a) { a a.next; c c.next; } return c; } }

相关新闻

YOLOv8 ONNX→TensorRT完整部署教程:C++/Python双接口实现,推理速度提升2倍以上

YOLOv8 ONNX→TensorRT完整部署教程:C++/Python双接口实现,推理速度提升2倍以上

前言:为什么你的YOLOv8部署总是不够快? 在AI模型落地过程中,训练只是起点,部署才是硬仗。很多开发者训练出精度不错的YOLOv8模型后,一放到生产环境就露馅了——推理速度慢、显存占用高、多路视频流卡顿。PyTorch原生推理虽然方便,但动态图开销大、算子融合不足,在实际业…

2026/7/16 4:33:16 阅读更多 →
Unity游戏模组开发框架BepInEx:从架构解析到Harmony补丁实战

Unity游戏模组开发框架BepInEx:从架构解析到Harmony补丁实战

1. 项目概述:为什么我们需要BepInEx?如果你是一名Unity游戏开发者,或者是一名热衷于为游戏制作模组的爱好者,那么你一定遇到过这样的困境:面对一个心爱的游戏,你有一个绝佳的修改或扩展想法,却发…

2026/7/16 4:31:13 阅读更多 →
C++实时数据流水线设计:7大核心模式与性能优化实战

C++实时数据流水线设计:7大核心模式与性能优化实战

1. 项目概述:从概念到实战的实时数据流水线最近刚参加完2025年的全球C技术大会,回来之后一直想找个时间把会上关于实时数据流水线设计的干货好好梳理一下。这个话题在大会上讨论得特别热烈,几乎每个做高性能计算、金融交易系统或者游戏服务器…

2026/7/16 4:29:09 阅读更多 →

最新新闻

C++编程入门:变量、输入输出与交互式程序开发实战

C++编程入门:变量、输入输出与交互式程序开发实战

1. 从“黑盒”到“对话”:理解变量、输入与输出的本质很多刚接触C的朋友,在第一课搭建好环境、写了个“Hello World”之后,心里可能会犯嘀咕:这玩意儿除了在屏幕上打印一句话,还能干啥?感觉离做出一个能用的…

2026/7/16 5:26:18 阅读更多 →
C++通讯录管理系统实战:从结构体到文件I/O的完整项目指南

C++通讯录管理系统实战:从结构体到文件I/O的完整项目指南

1. 项目概述:从零构建一个实用的通讯录管理系统最近在带几个刚学完C基础语法的朋友做项目,发现他们对于结构体、文件操作这些知识点的理解还停留在书本例题的层面,一到自己动手就不知道如何组织代码。正好,通讯录管理系统这个经典…

2026/7/16 5:24:17 阅读更多 →
【研发类-架构设计Skills】c4-architecture-c4-architecture 技能

【研发类-架构设计Skills】c4-architecture-c4-architecture 技能

使用自下而上的分析方法,为现有存储库/代码库生成全面的C4架构文档。 技能概述 c4-architecture-c4-architecture 技能实现了完整的C4架构文档流程,遵循C4模型(上下文、容器、组件、代码)。它使用自下而上的方法,从最深的代码目录开始向上工作,确保在合成为更高级别的抽象之前…

2026/7/16 5:24:17 阅读更多 →
机器人领域“手术机器人”高价值专利案例:一种柔性内窥镜手术机器人控制优化方法

机器人领域“手术机器人”高价值专利案例:一种柔性内窥镜手术机器人控制优化方法

课题来源:某高校机械与自动化学院横向科研攻关项目案例定位:面向柔性内窥镜连续体非线性变形、人工遥操作手抖误差大、关节多约束下实时最优求解困难、手术器械追踪稳定性差等痛点,开展融合图像空间主从映射、神经动力学递归神经网络、二次规…

2026/7/16 5:20:09 阅读更多 →
【Java零基础连载24】Java集合源码全集|ArrayList/LinkedList/HashMap底层原理、扩容机制、哈希冲突、面试万字详解

【Java零基础连载24】Java集合源码全集|ArrayList/LinkedList/HashMap底层原理、扩容机制、哈希冲突、面试万字详解

✨ 专栏:Java零基础全套入门连载教程 📌 简介:Java集合是日常开发使用频率最高、面试必考权重最大的核心模块,所有业务开发、数据存储、参数封装、框架底层均依赖集合体系。绝大多数业务Bug、性能问题、内存溢出、并发异常&#x…

2026/7/16 5:18:06 阅读更多 →
Home Assistant实战1-1:使用Raspberry Pi Imager一键部署官方系统

Home Assistant实战1-1:使用Raspberry Pi Imager一键部署官方系统

1. 为什么选择Raspberry Pi Imager安装Home Assistant如果你正准备搭建智能家居系统,树莓派绝对是性价比最高的选择。而说到安装Home Assistant官方系统,过去大家可能习惯用balenaEtcher这类通用烧录工具,但实测下来发现官方推出的Raspberry …

2026/7/16 5:18:06 阅读更多 →

日新闻

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

本篇深入剖析 ImportantDays 项目的数据持久化方案——基于 HarmonyOS ArkData 模块的 Preferences 轻量级存储,以及 PreferenceUtil 工具类的单例封装。一、HarmonyOS 数据存储方案对比 HarmonyOS 提供了多种数据存储方案:方案适用场景特点Preferences轻…

2026/7/16 0:08:27 阅读更多 →
Python实现跨境电商商品图批量翻译教程

Python实现跨境电商商品图批量翻译教程

一、问题引入做跨境电商的卖家朋友,你是否遇到过这样的困扰?每次上架新品到亚马逊、Shopee或Lazada等平台,都需要处理大量商品图片的多语言版本。比如上架200款衣服,每款需要翻译成英语、日语、韩语等5种语言,这意味着…

2026/7/16 0:08:27 阅读更多 →
鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

从鸿蒙 7(HarmonyOS NEXT)开始,官方全面完成了从 ohos.* 零散模块到 kit.* 领域套件的体系重构。对开发者来说,第一道门槛不是 API 用法变化,而是统一的导入规范——旧体系默认导入、解构导入混用的混乱局面被彻底终结…

2026/7/16 0:10:29 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/15 21:09:01 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/15 19:42:20 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/15 17:52:08 阅读更多 →

月新闻