问题描述
给定一个数组,要求找出数组中出现次数最多的偶数,如果有相同的,则返回最小的,如果没找到,则返回 -1
。题目链接:点我
样例输入输出
输入:[0,1,2,2,4,4,1]
输出:2
输入:[1,3,5,7]
输出:-1
问题解法
用一个 map 来存储偶数及其出现的个数,遍历数组,实时更新 map 中的值,同时更新当前的次数最多的最小偶数,遍历结束后,即可获得答案。代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public int mostFrequentEven(int[] nums) { int candidate = -1; Map<Integer, Integer> map = new HashMap<>(); for (int num : nums) { if (num % 2 == 0) { int count = map.getOrDefault(num, 0) + 1; map.put(num, count);
int temp = map.getOrDefault(candidate, Integer.MIN_VALUE); if (temp < count) { candidate = num; } else if (temp == count && num < candidate) { candidate = num; } } }
return candidate; } }
|