📅  最后修改于: 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
来表示字典,同时在获取字典中元素出现次数时需要指定默认值。
以上就是在一组整数中找到频率与数值相同的最大数的实现方法,希望对你有帮助!