请设计一个高效算法,判断数组中是否有重复值。必须保证额外空间复杂度为O(1)。
给定一个int数组A及它的大小n,请返回它是否有重复值。
import java.util.*;
public class Checker {
public boolean checkDuplicate(int[] a, int n) {
// write code here
int max = a[0], min = a[0];
for(int i = 0; i < n; i++){
if(a[i] < min)min = a[i];
if(a[i] > max)max = a[i];
}
int len = max - min + 1;
int count[] = new int[len];
int k = 0;
for(int i = 0; i < n; i++){
k = a[i] - min;
count[k] += 1;
if(count[k] > 1){
return true;
}
}
return false;
}
}