当前位置: 首页 > news >正文

100.寻找重复数

287. 寻找重复数

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

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

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

示例 1:

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

代码整体逻辑(先理解核心思想)

把数组抽象成一个带环的链表:数组的索引对应链表节点,nums[i] 对应节点 i 的下一个节点。
  • 因为数组有重复数,必然会出现「多个索引指向同一个值」的情况,这就形成了环。
  • 重复数就是「环的入口节点」,找到这个入口就能找到重复数。
算法分两步:
  1. 找快慢指针的相遇点:快指针(一次走两步)和慢指针(一次走一步)最终会在环内相遇。
  2. 找环的入口点:将其中一个指针重置到起点,两个指针以相同速度走,相遇处就是环的入口(即重复数)。
class Solution {public int findDuplicate(int[] nums) {// 初始化快慢指针,都指向起点(索引0)int slow = 0;int fast = 0;// 第一步:让快慢指针先各走一次(避免初始值相等直接跳过循环)slow = nums[slow];       // 慢指针走1步:从0 → nums[0]fast = nums[nums[fast]]; // 快指针走2步:从0 → nums[0] → nums[nums[0]]// 循环移动指针,直到快慢指针相遇(相遇在环内某个位置)while(slow != fast){slow = nums[slow];       // 慢指针每次走1步fast = nums[nums[fast]]; // 快指针每次走2步
        }// 第二步:找环的入口(重复数)int pre1 = 0;          // pre1 重置到起点(索引0)int pre2 = slow;       // pre2 留在快慢指针的相遇点// 两个指针以相同速度(每次走1步)移动,直到相遇while(pre1 != pre2){pre1 = nums[pre1]; // pre1 走1步pre2 = nums[pre2]; // pre2 走1步
        }// 相遇点就是环的入口,即重复数return pre1;}
}

【背比理解简单,又是快慢指针】

提前祝 新年快乐!

 

http://www.jsqmd.com/news/384188/

相关文章:

  • 如何为不同场景选疏通服务?2026年阜阳管道疏通全面评测与推荐,直击响应慢与效果差痛点 - 十大品牌推荐
  • 2026年阜新管道疏通推荐:基于多场景实测评价,解决堵塞与清淤核心痛点 - 十大品牌推荐
  • 阜新管道疏通哪家靠谱?2026年服务商推荐与评价,直击响应与质量痛点 - 十大品牌推荐
  • 智慧校园顶层设计如何助力学校数字化转型战略落地
  • 学长亲荐 8个降AIGC平台:专科生降AI率全测评与推荐
  • 干货合集:9个AI论文软件深度测评,MBA毕业论文与科研写作必备!
  • 2026年福州管道疏通推荐:多场景管道问题解决评价,直击堵塞与污染痛点 - 十大品牌推荐
  • 佛山管道疏通哪家强?2026年市场主流服务商评价与综合排名推荐 - 十大品牌推荐
  • 2026更新版!9个一键生成论文工具测评:自考毕业论文+开题报告高效写作指南
  • iPhone手机越狱后出现闪退的解决方法!
  • 如何选择福州管道疏通服务?2026年全面评测与推荐,直击响应慢痛点 - 十大品牌推荐
  • 这份榜单够用 9个一键生成论文工具:继续教育毕业论文写作全维度测评
  • 2026年东营管道疏通推荐:基于多场景实测评价,针对管道老化与效率低下痛点精准指南 - 十大品牌推荐
  • 强烈安利 10个降AI率软件降AIGC网站:本科生降AI率必备工具全测评
  • Java面试:从Spring Boot到微服务与分布式缓存的深度探讨
  • 管道疏通哪家靠谱?2026年东营管道疏通服务推荐与深度评测 - 十大品牌推荐
  • 985大学真的比211大学和普通一本大学好吗?选择一个适合自己的大学才是最重要的
  • 2026年东莞管道疏通推荐:基于多场景实测评价,针对堵塞与返水痛点精准指南 - 十大品牌推荐
  • 2026年佛山管道疏通推荐:居家应急与市政维护场景深度评测排名 - 十大品牌推荐
  • 2026年东莞管道疏通推荐:居家应急与市政维护场景深度评测排名 - 十大品牌推荐
  • 苹果手机(ios系统)无根越狱和有根越狱的区别
  • C++集群聊天服务器(1)—— muduo网络库服务器编程 - 详解
  • 2026年3D砂型打印机如何选:十大品牌综合推荐与选购指南 - 匠言榜单
  • adb命令总结
  • 基于YOLOv26的智能农业监测系统
  • 中国最大的建材博览会是哪个?2026五大展会全攻略 洞见趋势链接商机 - 匠言榜单
  • 别让美团礼品卡躺平,美团礼品卡回收让闲置钱再生钱 - 京顺回收
  • 读人工智能全球格局:未来趋势与中国位势05人类的未来(上)
  • 2026 年 GEO 推广厂家十强深度评测:技术迭代下,摘星 AI 凭核心算法登顶榜首 - 2026年企业推荐榜
  • 交稿前一晚!千笔·专业论文写作工具,领军级的AI论文软件