问题:
给定一个数组,元素不为空
要求:
返回数组中出现次数最多的数字
解决如下:
private Map<Integer,Integer> getArr(int arr){
Map<Integer,Integer> mi = new HashMap<Integer,Integer>();
for(int entry:arr){
if(!mi.containsKey(entry)){
mi.put(entry,1);
}else{
mi.put(entry,mi.get(entry)+1);
}
}
return mi;
}
public int getMost(int nums){
Map<Integer,Integer> maps = getArr(nums);
Map.Entry<Integer,Integer> resultMap = null;
for(Map.Entry<Integer,Integer> en : maps.entrySet()){
if(resultMap == null || en.getValue() > resultMap.getValue()){
resultMap = en;
}
}
return resultMap.getKey();
}
思路:
-
getArr()方法通过Map的性质,遍历数组,把数组中相同的数值放在一个键值对
-
getMost()方法,通过getArr()得到map,在遍历map,得到value最大的则是出现次数最多的;
该博客介绍了如何解决返回数组中出现次数最多的问题。通过使用Map数据结构,遍历数组并统计相同数值的出现次数,然后遍历Map找到value最大的键,即为出现次数最多的数字。
376

被折叠的 条评论
为什么被折叠?



