力扣287-寻找重复数
287. 寻找重复数 - 力扣LeetCode给定一个包含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提示1 n 105nums.length n 11 nums[i] nnums中只有一个整数出现两次或多次其余整数均只出现一次进阶如何证明nums中至少存在一个重复的数字?你可以设计一个线性级时间复杂度O(n)的解决方案吗对 i0,1,2,…,n连一条从 i 到nums[i]的有向边得到一个有向图每个节点的入度都表示这个节点在 nums 中的出现次数以示例一的[1, 3, 4, 2, 2]为例因为2出现了两次下标分别为3和4所以一定会有 3 - 2 和 4 - 2 两条边2 的入度就是它出现的次数严谨地说假设nums[i] nums[j] k即 k 为那个重复出现的数那么就必然建立 i - k 和 j - k 两条边由于每个节点的出度都为1因为下标唯一所以 n 1 个节点有 n 1 条边这样的有向图必然有环找到环的入口即可注意可能有多个连通块例如[1, 2, 1, 4, 3]中3 和 4 是互相指向的两个节点构成一个连通块。因此要从节点 0 出发寻找那么问题就变成了找链表中环开始的节点使用 Floyd 判圈算法其实就是快慢指针假设头节点到入环口要走 a 步环长为 b相遇时慢指针走了 c 步那么快指针走了 2c 步设快指针比慢指针多走了 k 圈则有2c - c kb即 c kb慢指针从入环口开始在环中走了 c - a kb - a 步到达相遇点对于快指针从入环口开始在环中走了 2kb - a 步到达相遇点那么如果同时让快慢指针再走 a 步慢指针从入环口开始在环中走了 kb 步快指针则是 2kb 步而环长为 b所以此时慢指针从入环口开始走了 k 圈快指针 2k 圈刚好为整数意味着相遇点再走 a 步就是入环口也就是说相遇后我们可以让一个新指针从头节点出发让慢指针从相遇点出发二者相遇的点就是入环口。因为慢指针差 a 步到相遇点而 a 的含义就是头节点到入环口的步数class Solution { public int findDuplicate(int[] nums) { int slow 0, fast 0; // 0必定不在环上因为入度为0 while(true) { slow nums[slow]; // slow slow.next fast nums[nums[fast]]; // fast fast.next.next if(fast slow) { break; } } int head 0; while(slow ! head) { slow nums[slow]; head nums[head]; } return slow; } }

相关新闻

哪个品牌的智慧食堂系统好用

哪个品牌的智慧食堂系统好用

究竟哪家的智慧食堂系统更适合你?在信息化快速发展的今天,智慧食堂管理系统已经成为各大企业、高校等食堂管理的必备工具。各大品牌如云勤通、阿里云、腾讯云及一些其他行业内的企业,纷纷推出了智慧食堂管理系统。这些系统各有特点&#xff0…

2026/7/20 22:35:53 阅读更多 →
用飞算JavaAI搭建融汇智能支付与清结算平台:让交易安全、清晰、可追溯

用飞算JavaAI搭建融汇智能支付与清结算平台:让交易安全、清晰、可追溯

支付类项目最容易让人一上来就陷入“接口很多、状态很多、账也很多”的焦虑。一次支付背后,不只是创建订单和返回结果,还牵涉到渠道路由、退款、账户记账、清分、结算、对账以及异常补偿。真正难的地方,是让这些环节在同一条链路里看得清、追…

2026/7/19 18:36:09 阅读更多 →
DLAI 文档人工智能笔记(二)

DLAI 文档人工智能笔记(二)

Amazon S3是AWS提供的可扩展对象存储服务,适用于任何类型和大小的文件。可以把它想象成一个无限的数字文件柜,可以从互联网任何地方访问。无论你添加多少文件,它永远不会耗尽空间。这将作为你数据的中央存储库。 以下是S3的使用方式&#xf…

2026/7/19 18:36:09 阅读更多 →

最新新闻

Theano 0.9中文文档解析与GPU加速技术

Theano 0.9中文文档解析与GPU加速技术

1. Theano 0.9中文文档发行说明解析 Theano作为Python生态中历史悠久的数值计算库,其0.9版本的发行说明记录了从2016年4月到2017年初的重要演进轨迹。这份文档不仅是版本变更的流水账,更折射出深度学习基础设施在关键发展期的技术转向。当时正值TensorFl…

2026/7/20 22:35:56 阅读更多 →
Mythos架构级推理:可追溯、可验证的AI协作者能力解析

Mythos架构级推理:可追溯、可验证的AI协作者能力解析

1. 项目概述:一次被刻意“锁住”的能力跃迁如果你最近关注大模型前沿动态,大概率已经看到“Anthropic Mythos”这个词在技术圈悄然升温。它不是新发布的模型,也不是某个开源项目,而是Anthropic内部代号为Mythos的一组核心能力模块…

2026/7/20 22:35:56 阅读更多 →
深入解析FSI帧结构:从物理信号到逻辑封装的嵌入式通信协议

深入解析FSI帧结构:从物理信号到逻辑封装的嵌入式通信协议

1. FSI帧结构:从物理信号到逻辑封装的完整视图在嵌入式系统,尤其是汽车电子和工业控制这类对实时性与可靠性要求极高的领域,串行通信协议的设计往往是决定系统稳定性的关键。我们常说的SPI、I2C、UART,各有其适用场景,…

2026/7/20 22:35:56 阅读更多 →
C语言学习进阶:四本经典书籍构建系统知识体系

C语言学习进阶:四本经典书籍构建系统知识体系

很多人学 C 语言,是从一个 printf("Hello, World!"); 开始的。这个起点简单、纯粹,充满了对计算机世界的好奇。但很快,你就会发现,从“能运行”到“能理解”,再到“能精通”,中间隔着一条巨大的…

2026/7/20 22:35:56 阅读更多 →
终极Python元搜索库DDGS完整指南:如何快速聚合多个搜索引擎结果

终极Python元搜索库DDGS完整指南:如何快速聚合多个搜索引擎结果

终极Python元搜索库DDGS完整指南:如何快速聚合多个搜索引擎结果 【免费下载链接】ddgs A metasearch library that aggregates results from diverse web search services 项目地址: https://gitcode.com/GitHub_Trending/du/ddgs 想要一次性从DuckDuckGo、G…

2026/7/20 22:34:55 阅读更多 →
向量引擎接入报错分析与避坑指南

向量引擎接入报错分析与避坑指南

1. 向量引擎接入报错问题全景分析最近在接入某款主流向量引擎时,遇到了各种"一跑就报错"的糟心情况。作为经历过完整踩坑周期的开发者,我把整个调试过程整理成这份避坑指南。无论你用的是Faiss、Milvus还是其他向量数据库,这些经验…

2026/7/20 22:34:55 阅读更多 →

日新闻

2026 WAIC:努比亚二代“豆包手机”NaviX Ultra亮相,智能体验全面升级!

2026 WAIC:努比亚二代“豆包手机”NaviX Ultra亮相,智能体验全面升级!

7月18日智东西消息,在2026 WAIC期间,努比亚联合字节豆包打造的二代“豆包手机”努比亚NaviX Ultra首次亮相,相比一代有诸多升级。智能体手机理念中兴通讯终端事业部总裁、努比亚总裁倪飞表示,智能体手机要从人操作手机变为手机帮人…

2026/7/20 0:00:34 阅读更多 →
努比亚NaviX Ultra亮相WAIC,智能体手机能否让用户生活更简单?

努比亚NaviX Ultra亮相WAIC,智能体手机能否让用户生活更简单?

努比亚NaviX Ultra:外观与功能双升级在2026 WAIC期间,首次亮相的努比亚NaviX Ultra吸引了众多目光。它是努比亚联合字节豆包打造的二代“豆包手机”,与一代努比亚M153相比,外观设计变化较大。其机身背部搭载横向排布的大尺寸影像模…

2026/7/20 0:00:34 阅读更多 →
C# 将逗号分割的字符串转换为long,并添加到List<long>

C# 将逗号分割的字符串转换为long,并添加到List<long>

目录 方法1:使用Split和Convert.ToInt64 方法2:使用LINQ的Select和ToList 方法3:使用TryParse进行异常安全转换(推荐) 如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天…

2026/7/20 0:00:34 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/20 5:57:49 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/20 4:31:26 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/20 5:56:42 阅读更多 →

月新闻