力扣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/23 21:28:36 阅读更多 →
用飞算JavaAI搭建融汇智能支付与清结算平台:让交易安全、清晰、可追溯

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

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

2026/7/24 1:43:07 阅读更多 →
DLAI 文档人工智能笔记(二)

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

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

2026/7/21 19:17:25 阅读更多 →

最新新闻

Unity游戏模组开发入门:BepInEx插件框架核心原理与实践指南

Unity游戏模组开发入门:BepInEx插件框架核心原理与实践指南

1. 项目概述:为什么你需要BepInEx? 如果你是一个Unity游戏的深度玩家,或者是一个对游戏模组(Mod)开发感兴趣的开发者,那么“BepInEx”这个名字你一定不陌生。简单来说,BepInEx是一个用于Unity游…

2026/7/24 10:04:22 阅读更多 →
HarmonyOS应用实战-启示散页-28-错误不要只弹 Toast:用可恢复错误页接住损坏题库和异常入口

HarmonyOS应用实战-启示散页-28-错误不要只弹 Toast:用可恢复错误页接住损坏题库和异常入口

HarmonyOS应用实战-启示散页-28-错误不要只弹 Toast:用可恢复错误页接住损坏题库和异常入口 这一组文章继续围绕 The_Book_of_Answers 展开。它不是一次性页面 Demo,而是一个小型 HarmonyOS 离线应用:默认题库从 rawfile 播种,题库…

2026/7/24 10:04:22 阅读更多 →
AI Agent版本管理与灰度发布最佳实践

AI Agent版本管理与灰度发布最佳实践

1. AI Agent Harness Engineering 概述AI Agent Harness Engineering 是一种新兴的工程实践方法,专注于构建和管理智能体(Agent)系统的全生命周期。这种方法特别强调在复杂环境中对AI Agent进行有效控制和引导,就像给马匹套上缰绳…

2026/7/24 10:04:22 阅读更多 →
qData数据中台专业版V2.5.0更新:多维度优化功能,助力企业数据研发与治理

qData数据中台专业版V2.5.0更新:多维度优化功能,助力企业数据研发与治理

从分散到统一:优化数据研发流程数据研发并非仅编写SQL,一条数据任务从创建到运行,通常要经历“查找数据资源 -> 确认表结构 -> 编写SQL -> 配置参数 -> 执行任务 -> 查看结果 -> 分析日志 -> 评估上下游影响”等环节。若…

2026/7/24 10:04:22 阅读更多 →
RAG系统评估实战:RAGAS与LangFuse应用指南

RAG系统评估实战:RAGAS与LangFuse应用指南

1. RAG评估体系的核心价值与挑战在构建基于检索增强生成(RAG)的系统时,评估环节往往是最容易被忽视却又最关键的部分。我见过太多团队花费数月开发复杂的RAG管道,却只用简单的准确率或人工抽查来验证效果,最终上线后才…

2026/7/24 10:04:22 阅读更多 →
高速差分信号接口设计:从LVDS/CML选型到SerDes架构与信号完整性实战

高速差分信号接口设计:从LVDS/CML选型到SerDes架构与信号完整性实战

1. 项目概述:高速差分信号接口的基石 在当今的数据洪流时代,无论是数据中心服务器间每秒TB级的交互,还是智能手机屏幕上流畅的4K视频显示,背后都离不开一项关键技术:高速差分信号接口。你可能听说过LVDS、CML这些名词&…

2026/7/24 10:03:22 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/7/23 17:49:47 阅读更多 →

月新闻