news 2026/8/27 4:24:03

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/8/23 17:37:55

mpip 如何获取Mpi调用的总次数 awk

cat tm | awk $4 ~ /^[0-9]/ {print $1,$4} | awk {sum[$1]$2} END {for (k in sum) print k, sum[k]} Irecv 6720 Barrier 4 Wait 6720 Send 6720 Bcast 4 Reduce 4

作者头像 李华
网站建设 2026/8/26 21:55:04

Modbus RTU转TCP,不换工业设备就能快速实现!

Modbus RTU通信协议作为工业领域的常青树,广泛应用于各类基于RS485/232串口的设备中。 然而,随着工业互联网的发展,SCADA系统、上位机及HMI已逐渐普及以太网架构,甚至实现了向Wi-Fi无线通信的迭代。 在许多工厂中,现有…

作者头像 李华
网站建设 2026/8/26 15:55:21

设计模式的进阶思考:从套用到创造

做嵌入式C开发(尤其是DSP C开发)的同学,大概率都踩过这样的坑:初学设计模式时,抱着《设计模式》书籍死记硬背,把单例、状态机、命令模式的代码模板原封不动套到项目里,结果要么“水土不服”——…

作者头像 李华
网站建设 2026/8/22 23:59:57

首尔大学突破:AI推理“接力棒”策略实现高效智能协同

在人工智能快速发展的今天,我们经常听到一个困扰:那些最聪明的AI大模型虽然能解决复杂问题,但运行起来既慢又耗费资源,就像请了一位博士来做所有工作,连简单的计算都要他亲自动手。首尔大学的研究团队最近发表了一项创…

作者头像 李华