题目来源
题目描述
题目解析
哈希表
因为一个2N个数,N+1个不同的元素:元素1重复了N次,剩下N个为N个不同的元素,也就是除了元素1有N个,其他元素都只有N个
结论1:最大元素次数为N
结论2:次数大于2的元素就是元素N
class Solution {
public int repeatedNTimes(int[] A) {
Map<Integer, Integer> map = new HashMap<>();
for (int value : A) {
if (map.containsKey(value)) {
return value;
} else {
map.put(value, 1);
}
}
return -1;
}
}
随机法
class Solution {
public int repeatedNTimes(int[] A) {
Random r = new Random();
int len = A.length;
int a,b;
while(true){
a = r.nextInt(len);
b = r.nextInt(len);
if(a!=b && A[a]==A[b]){
return A[a];
}
}
}
}
摩根投票法,必须是数 > N/2的