实例 005 找出数组中出现次数最多的数字
1、问题描述
在给定的数组中找到出现次数最多的数字。如果出现次数最多的数字不止一个,则回其中最小的数字。
2、问题示例
输入:array=[1,1,2,3,3,3,4,5]
输出:3
3、代码实现
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class Play005 {
public static void main(String[] args) {
int[] array = {9,4,5,5,5,1,1,4,3,4,7,4,8,4};
System.out.print("输入:");
System.out.println(Arrays.toString(array));
System.out.print("输出:");
System.out.println(findNumber(array));
}
public static int findNumber(int[] array) {
Map<Integer, Integer> counter = new HashMap<>();
int answer = 0;
int maxNumber = 0;
int arrayLength = array.length;
for (int i = 0; i < arrayLength; i++) {
if (!counter.containsKey(array[i])) {
counter.put(array[i], 1);
}else {
counter.put(array[i], counter.get(array[i]) + 1);
}
if (counter.get(array[i])>maxNumber) {
maxNumber = counter.get(array[i]);
answer = array[i];
} else if (counter.get(array[i])==maxNumber && array[i]<answer) { // 更新答案为当前元素(选择较小的数字),这一步确保了在出现次数相同的情况下选择最小的数字。
answer = array[i];
}
}
return answer;
}
}
4、运行结果
输入:[9, 4, 5, 5, 5, 1, 1, 4, 3, 4, 7, 4, 8, 4]
输出:4
本文章参考或引用如下:
玩转Java--手把手教你编写300个精彩案例,作者:李永华、陈宏铭