【Leetcode】Find the Duplicate Number
来源:互联网 发布:股票交易策略 知乎 编辑:程序博客网 时间:2024/05/17 08:14
题目链接:https://leetcode.com/problems/find-the-duplicate-number/
题目:
Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), prove that at least one duplicate number must exist. Assume that there is only one duplicate number, find the duplicate one.
Note:
- You must not modify the array (assume the array is read only).
- You must use only constant, O(1) extra space.
- Your runtime complexity should be less than
O(n2)
. - There is only one duplicate number in the array, but it could be repeated more than once.
思路:
不能修改数组所以不能排序,不能用额外的空间所以不能用HashMap,考虑鸽巢原理。数的范围在1~n之间,有n+1个数
猜测重复数为n/2,计算数组中大于n/2的次数count,如果重复的数在n/2~n之间的话,count应该是大于n-n/2的,搜索范围就减少为[n/2~n]了;否则搜索范围为[1~n/2]。
算法:
public int findDuplicate(int[] nums) {int n = nums.length-1,l=1,r=n;while(l<r){int m = (l+r)/2,count=0,t=0;for(int i=0;i<nums.length;i++){if(nums[i]>m)count++;if(nums[i]==m){t++;}}if(t>1)return m;if(count>(n-m)){ //当count大于m应该被大于的次数,则重复值肯定在右边l = m+1;}else{r = m-1;}}return l;}
0 0
- leetcode Find the Duplicate Number
- *LeetCode-Find the Duplicate Number
- [Leetcode] Find the Duplicate Number
- Leetcode -- Find the Duplicate Number
- LeetCode----Find the Duplicate Number
- LeetCode Find the Duplicate Number
- LeetCode -- Find the Duplicate Number
- [Leetcode]Find the Duplicate Number
- leetcode Find the Duplicate Number
- 【Leetcode】Find the Duplicate Number
- LeetCode Find the Duplicate Number
- Leetcode: Find the Duplicate Number
- leetcode: Find the Duplicate Number
- leetcode--Find the Duplicate Number
- 《leetCode》:Find the Duplicate Number
- LeetCode:Find the Duplicate Number
- [leetcode]-Find the Duplicate Number
- leetcode Find the Duplicate Number
- uva 1589 xiangqi
- 详细讲述python自省函数getattr的用法
- The request sent by the client was syntactically incorrect ()问题
- 2015-12-7 15:29:40
- 1052. Linked List Sorting (25)【链表+排序】——PAT (Advanced Level) Practise
- 【Leetcode】Find the Duplicate Number
- 如何从官网下载最新的jdk API
- How to use NQ logs to check data in DB
- 如何正确获得Android内外SD卡路径
- [转载文章] 解析漏洞总结
- Climbing Stairs
- MapReduce性能优化_2. 诊断 Map 端性能瓶颈
- 【转】shell awk 入门
- ios创建的sqlite数据库文件如何从ios模拟器中导出