如果该数字出现在数组大小的一半以上,则此方法返回正整数数组中的数字,否则返回 -1。我需要为更大的数组改进它的运行时间(10^5<size<10^8)
。有什么建议么?
public static int findResult(int arr[],int len){
int val=0;
HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int i=0;i<len;i++){
if(map.containsKey(arr[i])){
val = (Integer)map.get(arr[i]);
map.put(arr[i], val+1);
}else{
val=1;
map.put(arr[i], val);
}
}
Iterator<Integer> it=map.keySet().iterator();
while(it.hasNext()){
int next=it.next();
if((Integer)map.get(next)>(len/2)){
return next;
}
}
return -1;
}