(劍指offer)陣列中出現次數超過一半的數字
阿新 • • 發佈:2018-12-07
時間限制:1秒 空間限制:32768K 熱度指數:248291
本題知識點: 陣列
題目描述
陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。
import java.util.*;
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for(int i = 0; i < array.length; i++){
if(map.containsKey(array[i])){
map.put(array[i],map.get(array[i])+1);
}else{
map.put(array[i], 1);
}
}
Iterator it = map. entrySet().iterator();
while(it.hasNext()){
Map.Entry entry = (Map.Entry)it.next();
Integer key = (Integer)entry.getKey();
Integer value = (Integer)entry.getValue();
if(value>array.length/2){
return key;
}
}
return 0;
}
}