LeetCode-287-寻找重复数

思路

参考快慢指针的解释 [从@Damien_Undo写的题解得到启发]
使用快慢指针来解决。首先观察一下数组如何成为一个指针。假设存在一个数组【1,2,3,4,5,6,7,8,9,5】,那么下标【i】就是指针,nums[i]也是指针,指向下一个元素,从数组下标为0开始遍历,结果是【1,2,3,4,5,6,7,8,9,5】【6,7,8,9,5】【6,7,8,9,5】…【6,7,8,9,5】可以发现此时已经进入了【6,7,8,9,5】这个环中,找到重复的数其实就是找到环的入口,这和142.环形链表II是一个问题了。

使用快慢指针,fast与slow相遇时,slow走了n步,fast走了2n步,起点到入口的距离为a,那么说明slow在环中走了n-a步,此时,只需然slow再走a步,就到达入口,那么就让fast指针以步长为1从起点走a步,此时fast在入口与slow再次相遇

代码

    public int findDuplicate(int[] nums) {int fast=0,slow=0;while(true){fast=nums[nums[fast]];slow=nums[slow];if(slow==fast)break;}fast=0;while(slow!=fast){slow=nums[slow];fast=nums[fast];}return slow;}

LeetCode-287-寻找重复数相关推荐

  1. LeetCode 287. 寻找重复数(BitMap)

    文章目录 1. 题目信息 2. 解题 2.1 BitMap 2.2 set去重 2.3 官方解题,快慢指针 1. 题目信息 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之 ...

  2. leetcode 287. 寻找重复数(Find the Duplicate Number)

    目录 题目描述: 示例 1: 示例 2: 解法: 题目描述: 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数.假设只有一 ...

  3. LeetCode 287. 寻找重复数

    给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数.假设只有一个重复的整数,找出这个重复的数. 示例 1: 输入: [1,3 ...

  4. 【LeetCode】【HOT】287. 寻找重复数(抽象环形链表)

    [LeetCode][HOT]287. 寻找重复数 文章目录 [LeetCode][HOT]287. 寻找重复数 package hot;public class Solution287 {publi ...

  5. 287. 寻找重复数

    寻找重复数 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数.假设只有一个重复的整数,找出这个重复的数. class So ...

  6. 【手绘漫画】图解LeetCode之寻找重复数(LeetCode287题),抽屉原理

    文章目录 图解LeetCode刷题计划 1.写在前面 2.题目 3.正文 4.代码 5.讨论 图解LeetCode刷题计划 1.写在前面 手绘漫画系列正式上线!!!"图解LeetCode刷题 ...

  7. leetcode 287. Find the Duplicate Number | 287. 寻找重复数(判断链表是否有环,并找到环的起点)

    题目 https://leetcode.com/problems/find-the-duplicate-number/ 题解 题目有限制 不能修改数组元素,必须 O(1) 空间复杂度,所以 不能排序, ...

  8. 【leetcode】287. 寻找重复数

    题目链接:传送门 题目描述: 给定一个数组 nums 包含 n + 1 个整数,每个整数在 1 到 n 之间,包括 1 和 n.现在假设数组中存在一个重复的数字,找到该重复的数字. 注意 不能修改数组 ...

  9. 【leetcode】287 寻找重复数(查找)

    题目链接:https://leetcode-cn.com/problems/find-the-duplicate-number/ 题目描述 给定一个包含 n + 1 个整数的数组 nums,其数字都在 ...

  10. 【LeetCode笔记】287. 寻找重复数(Java、快慢指针、原地、链表)

    文章目录 题目描述 思路 & 代码 更新 题目描述 可以理解成数组版本的 环形链表 II 更多详细思路可见以上超链接. 思路 & 代码 如何转化成逻辑上的链表? nums[i] 是 第 ...

最新文章

  1. 使用页面元素属性做状态判断的隐患
  2. 解决struts.xml文件提示问题
  3. 用户进程与内核进程通信netlink实例
  4. linux 给权限命令,Linux小白实用命令--权限设置
  5. 为你的APK进行数字签名
  6. redis主从和集群搭建
  7. 谈谈多源数据融合-科普基本概念篇
  8. 线粒体和叶绿体的基因组特点_叶绿体和线粒体基因组的组装研究
  9. [Delphi学习]Delphi Access Violation错误的分析
  10. android wifi 文件共享,一个Android WiFi 文件共享程序
  11. android listview 上拉图片闪烁,android listview使用glide异步加载图片错位,闪烁问题...
  12. 【云原生 | Envoy 系列】--Envoy Http Ingress,Egress,front Proxy静态配置
  13. 浅析专题中的构图之美
  14. (NO.00005)iOS实现炸弹人游戏(一):游戏的整体规划设计
  15. 北京大学计算机专业王腾,王腾-青年学者-北大地空学院
  16. Swift编程资料总结
  17. BASH脚本基础:与、或、格式
  18. python-opencv图像傅里叶变换
  19. 骨传导耳机为什么不普及?分析骨传导耳机的利与弊
  20. 看懂《C程序设计(第五版)学习辅导》第16章中介绍的用Visual Studio 2010对C程序进行编辑、编译、连接和运行的方法,并进行以下操作

热门文章

  1. STM32F051——USART
  2. linux系统下一些截屏录屏翻译等等小软件
  3. 德莫弗-拉普拉斯定理
  4. 55节开源巨献,教你制作一个智能无线电应答平台
  5. 小巧实用的音视频剪辑工具大集合
  6. window系统中的系统进程
  7. 把自己当作品牌来经营
  8. android手机酷狗缓存,酷狗音乐(com.kugou.android) - 10.6.5 - 应用 - 酷安
  9. 数据结构实验 四色地图染色 c语言实现
  10. .nhd文件怎么打开