news 2026/6/10 15:02:56

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/6/10 16:52:09

Unity 3D粒子与UI层级冲突全解析

你有没有遇到过这种“看似简单、实则气人”的场景: 我在 UI 上做个按钮闪光、点击爆炸、飘星星,直接把粒子拖到 Canvas 里,结果……它要么不显示,要么永远盖在最上面,要么永远在最下面。 我把粒子放到 World Space 里,结果跟 UI 的遮罩(Mask/RectMask2D)完全不搭,UI 裁…

作者头像 李华
网站建设 2026/6/10 12:54:41

别再玩“小龙虾”了,我找到了更适合中国宝宝体质的MemU Bot

最近 AI 圈最火的项目莫过于 ClawBot(以及相关的 Claude Computer Use 衍生项目)。热度虽高,但劝退率也极高。如果你尝试过部署,就会发现:环境依赖复杂、权限配置繁琐、Docker 容器报错不断,甚至项目本身的…

作者头像 李华
网站建设 2026/6/10 15:09:17

qt5.15配置charts(Qchartview)

1,ui界面提升 graphics_view 提升为Qchartview。 注意头文件是 QtCharts/QChartView (没有.h的后缀名)2,camkelist 修改find和link连接这里还要加一个if 不然后警告3,头文件设置4,cpp文件#include "widget.h&qu…

作者头像 李华
网站建设 2026/6/10 18:02:38

编译器的魔法:生成C代码的六点思考

在编译器开发中,我们经常需要将程序翻译成其他形式。相比直接生成汇编代码,C语言是一个更高层次的目标语言选择。生成C代码比手写C代码更安全——生成器可以避免许多未定义行为的陷阱。本文分享我在实践中总结的六个技巧。 1. 用静态内联函数实现数据抽象…

作者头像 李华
网站建设 2026/6/10 19:08:01

2025IP地址库选型实录:从风控实战角度横向对比

每年都有人问:“有没有靠谱的 IP 地址库推荐?” “XX IP 库准不准?值不值得换?”这几年在风控、日志分析、海外业务里,我试过不少 IP 库,踩过一些坑。今天重点聊三件事:用起来顺不顺、社区评价如…

作者头像 李华
网站建设 2026/6/10 15:53:50

清华大学:让科研像聊天一样简单系列—Gemini科研手册指南 2026

这份由北航、清华大学团队打造的 Gemini 科研手册指南,是面向科研小白的科普内容,核心围绕利用 Gemini 实现全流程科研辅助展开,让科研工作像聊天一样简单,同时提示相关提示词仅作参考,受数据、测试环境等因素影响。手…

作者头像 李华