package offer;
public class Duplication {
private int countRange(int[] arr,int l,int r) {
int count=0;
for(int i =0;i<arr.length;i++) {
if(arr[i]>=l&&arr[i]<=r) {
++count;
}
}
return count;
}
public int getDuplication(int[] arr) {
int start = 1;
int end = arr.length-1;
while(end>=start) {
int middle = (end-start)/2 + start;
int count = countRange(arr,start,middle);
if(end==start) {
if(count>1)
return start;
else {
break;
}
}
if(count>middle-start+1) {
end = middle;
}else {
start=middle+1;
}
}
return -1;
}
}
剑指offer-面试题2-不修改数组找出重复的数字
猜你喜欢
转载自blog.csdn.net/weixin_41993767/article/details/84192936
今日推荐
周排行