AcWing 14. 不修改数组找出重复的数字
原题链接
简单
作者:
SH2OCN
,
2019-04-15 16:22:35
,
所有人可见
,
阅读 1366
Java代码
class Solution {
public int duplicateInArray(int[] nums) {
if(nums == null || nums.length < 2)
return -1;
int low = 1;
int high = nums.length - 1;
int mid = 0, res = 0;
while(low < high) {
mid = low + (high - low) / 2;
res = count(nums, low, mid);
if(res > mid - low + 1) {
high = mid;
}
else {
low = mid + 1;
}
}
return low;
}
public int count(int[] nums, int low, int high) {
int ans = 0;
for (int i : nums) {
if(i >= low && i <= high)
ans ++;
}
return ans;
}
}