在一个数组中找出相同个数最多的数
面试中被问到的:
在一个数组中找出相同个数最多的数,[1, 1, 1, 2, 2, 3]返回1
思路
创建一个Map,将数组元素的值作为key,出现的次数作为value
如果map的value之前不存在为空,则value = 1;
如果map的value之前存在,则value += 1;
public static int maxRepeatCount(int[] array){//边界条件if (array == null || array.length == 0) return 0;if (array.length == 1) return array[0];int maxCount = 0;int maxValue = array[0];//k是元素值,value是出现的个数Map<Integer, Integer> map = new HashMap();for (int i = 0; i < array.length; i++) {//如果取出是空值,就赋值0map.putIfAbsent(array[i], 0);//取出值Integer value = map.get(array[i]);//如果取出是空值,就赋值0 跟上面第一行留一个即可if(value == null) value = 0;//+1map.put(array[i], value + 1);if(maxCount < value + 1){maxCount = value + 1;maxValue = array[i];}}return maxValue;}