寻找重复数
2020-09-12 本文已影响0人
windUtterance
题目描述:
给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。
示例:
输入: [3,1,3,4,2]
输出: 3
Java代码:
class Solution {
public int findDuplicate(int[] nums) {
int len = nums.length;
int left = 1;
int right = len - 1;
while(left < right) {
int mid = (left + right) >>> 1;
int count = 0;
for(int num : nums) {
if(num <= mid) count += 1;
}
//根据抽屉原理,小于等于4的个数如果严格大于4,那么重复元素一定会出现在[1,4]中
if(count > mid) right = mid;
else left = mid + 1;
}
return left;
}
}