找出数组中出现次数最多的数字(Java 描述)

99 阅读1分钟

实例 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个精彩案例,作者:李永华、陈宏铭