news 2026/4/18 2:04:36

LeetCode热题100--287. 寻找重复数--中等

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode热题100--287. 寻找重复数--中等

题目

给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。

假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。

你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。

示例 1:
输入:nums = [1,3,4,2,2]
输出:2

示例 2:
输入:nums = [3,1,3,4,2]
输出:3

示例 3 :
输入:nums = [3,3,3,3,3]
输出:3

题解

classSolution{publicintfindDuplicate(int[]nums){intslow=0;intfast=0;slow=nums[slow];fast=nums[nums[fast]];while(slow!=fast){slow=nums[slow];fast=nums[nums[fast]];}intpre1=0;intpre2=slow;while(pre1!=pre2){pre1=nums[pre1];pre2=nums[pre2];}returnpre1;}}

解析

出自:287.寻找重复数

classSolution{publicintfindDuplicate(int[]nums){// 初始化快慢指针,都从索引 0 开始// 注意:这里不是从 nums[0] 开始赋值,而是先设为 0(下标)intslow=0;intfast=0;// 先走一步,避免 while 循环一开始 slow == fast 跳过// 慢指针走一步:slow = nums[slow]slow=nums[slow];// 快指针走两步:fast = nums[nums[fast]]fast=nums[nums[fast]];// 第一阶段:使用 Floyd 判圈算法,找到环中的相遇点// 条件:只要 slow 和 fast 没相遇,就继续移动while(slow!=fast){slow=nums[slow];// 慢指针每次走 1 步fast=nums[nums[fast]];// 快指针每次走 2 步}// 第二阶段:找环的入口(即重复的数字)// pre1 从数组起点(下标 0)出发intpre1=0;// pre2 从第一阶段的相遇点出发intpre2=slow;// 当两个指针未相遇时,各自每次走 1 步while(pre1!=pre2){pre1=nums[pre1];// pre1 向前走一步pre2=nums[pre2];// pre2 向前走一步}// 相遇点即为环的入口,也就是重复的数字// 返回任意一个指针的值(pre1 或 pre2)returnpre1;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:58:02

面向对象高级2

多态类型转换final 常量 抽象类模板设计模式

作者头像 李华
网站建设 2026/4/4 1:16:00

基于Springboot心灵治愈交流平台【附源码+文档】

💕💕作者: 米罗学长 💕💕个人简介:混迹java圈十余年,精通Java、小程序、数据库等。 💕💕各类成品Java毕设 。javaweb,ssm,springboot等项目&#…

作者头像 李华
网站建设 2026/3/26 22:13:35

Java全栈开发工程师面试实战:从基础到微服务的深度探讨

Java全栈开发工程师面试实战:从基础到微服务的深度探讨 1. 面试开场 面试官(李工):你好,我是李工,今天来聊聊你作为Java全栈开发工程师的经验。先简单介绍一下自己吧。 应聘者(张明)…

作者头像 李华
网站建设 2026/3/24 21:04:28

C++考试实用代码

目录实用1 万能头工作原理注意事项和弊端实用2 加速输入输出工作原理注意事项和弊端实用 3 快读使用原理后记实用1 万能头 大部分人应该都知道此代码。 其代码为&#xff1a; #include<bits/stdc.h>工作原理 此头文件包含众多头文件&#xff0c;因此加上这个&#xf…

作者头像 李华
网站建设 2026/4/16 3:14:52

C#/.NET/.NET Core优秀项目和框架2026年1月简报

前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架&#xff08;每周至少会推荐两个优秀的项目和框架当然节假日除外&#xff09;&#xff0c;公众号推文中有项目和框架的详细介绍、功能特点、使用方式以及部分功能截图等&#xff08;打不开或者打开GitHub很慢的…

作者头像 李华