📜  数组中频率与值相同的最大数(1)

📅  最后修改于: 2023-12-03 14:55:00.028000             🧑  作者: Mango

数组中频率与值相同的最大数

在一组整数中,可能出现多个数的频率与数值相同的情况,我们需要找到其中的最大值。下面是一个示例:

给定数组: [1,3,2,2,5,2,3,7], 返回 2,因为它在数组中出现的次数是3次,且这是出现次数最多的数。

我们可以使用哈希表统计每个数出现的次数,然后遍历一遍哈希表找出出现次数最大的数。下面是对应的python代码实现:

def findMax(arr):
    dic = {}
    max_num = arr[0]
    for num in arr:
        dic[num] = dic.get(num, 0) + 1
        if dic[num] >= dic[max_num]:
            max_num = num
    return max_num

接着我们进行一些说明:

  • 首先定义了一个字典 dic,用来存储每个数出现的次数。
  • max_num 用来表示当前出现次数最多的数。
  • 遍历数组 arr,对每个数的出现次数进行统计,同时根据出现次数更新 max_num
  • 最后返回 max_num

在上面的代码中,我们使用了python中的 get() 方法来获取字典中 num 出现的次数。如果 num 不存在于字典中,get() 方法将返回默认值 0。

下面是对应的Java版本的代码实现:

public static int findMax(int[] arr) {
    HashMap<Integer, Integer> map = new HashMap<>();
    int max = arr[0];
    for (int num : arr) {
        int count = map.getOrDefault(num, 0) + 1;
        map.put(num, count);
        if (count >= map.getOrDefault(max, 0)) {
            max = num;
        }
    }
    return max;
}

和python版本相比,Java版本中需要指定泛型类型,使用 HashMap 来表示字典,同时在获取字典中元素出现次数时需要指定默认值。

以上就是在一组整数中找到频率与数值相同的最大数的实现方法,希望对你有帮助!