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

示例 1:

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

代码

class Solution {public int findDuplicate(int[] nums) {int n=nums.length,l=1,r=n-1;while (l<r){int mid = (l + r+1) >>> 1;int count=0;for(int num:nums)//统计小于mid数字出现的次数{if(num<mid)count++;}if(count>=mid)//如果小于mid数字出现的次数大于mid,则小于mid的数字出现重复r=mid-1;else l=mid;}return l;}
}

解题思路

和环形链表一样,快慢指针,快的每次两跳,慢的一跳,相遇的时候,慢回起点,快慢都变为每一次一跳,入口就是重复元素

代码

class Solution {public int findDuplicate(int[] nums) {int s=0,f=0;do {s=nums[s];f=nums[nums[f]];}while (s!=f);s=0;do {s=nums[s];f=nums[f];}while (s!=f);return s;}
}

leetcode287. 寻找重复数(二分法)相关推荐

  1. LeetCode-287 寻找重复数 二分法

    LeetCode-287 寻找重复数 二分法 287. 寻找重复数 给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数. ...

  2. Leetcode--287. 寻找重复数

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

  3. Leetcode--287. 寻找重复数(Java)

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

  4. 快慢指针(LeetCode寻找重复数),弗洛伊德的乌龟和兔子

    写此篇博客在于总结,记忆之用,欢迎评论补充. 弗洛伊德的乌龟和兔子,即快慢指针. 对于LeetCode287题,寻找重复数,题目如下: 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 ...

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

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

  6. 287. 寻找重复数

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

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

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

  8. 寻找重复数—leetcode287

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

  9. [Leedcode][JAVA][第287题][寻找重复数][HashSet][二分查找][快慢指针]

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

最新文章

  1. java action dao_java中Action层、Service层和Dao层的功能区分
  2. 轻松得到C# ADO.NET的各种数据库连接字符串
  3. mobx使用数组提示越界_向Mobx可观察数组添加操作
  4. Python 技术篇-读取文件,将内容保存dict字典中。去掉字符串中的指定字符方法,dict字典的遍历
  5. 小程序页面跳转的几个方法和区别
  6. 数学和计算机的应用视频教学反思,数学多媒体教学反思.doc
  7. Note 7会让三星有什么样的命运呢?
  8. OA报账规范(出差专用)
  9. 数据库系统工程师考点笔记
  10. windows常见电脑蓝屏的解决办法
  11. 总弹出Visual Studio实时调试器的问题
  12. 华为数字化转型之道第二讲
  13. 帕拉丁(山东)俱乐部大型西藏自驾游,天籁之旅,与心灵自由相约
  14. 铁乐学Python_day05-字典dict
  15. Cadence Allegro使用过程中出现的常见问题-原理图和PCB
  16. 毕业设计-基于微信小程序的工单智能管理系统
  17. 电脑BIOS密码的设置与修改方法
  18. VBA遍历文件夹下的所有文件
  19. RepLKNet代码解读(31大小的卷积核)
  20. 如何选择PMP、IPMP、CPMP?

热门文章

  1. 大牛手把手教你!2021大厂Java面试经历
  2. 牛客网笔记之数组(一)
  3. 我的MarkDown入门
  4. 【转】PHP面试题总结
  5. python ==字符串
  6. 如何对数据库中的表以及表中的字段进行重命名
  7. 【英语天天读】第一场雪
  8. ASP.NET N问N答 (一) ASP.NET怎么导出到WORD?(把girdview里面的数据到出到word)
  9. 如何使用python导入mat格式的数据并整理
  10. 关于之前的函数式编程