0%

leetCode-2404:Most Frequent Even Element

问题描述

给定一个数组,要求找出数组中出现次数最多的偶数,如果有相同的,则返回最小的,如果没找到,则返回 -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;
}
}