题目链接: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:
O(n2)
.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; }