目录链接:
力扣编程题-解法汇总_分享+记录-CSDN博客
GitHub同步刷题项目:
https://github.com/September26/java-algorithms
原题链接:力扣
描述:
给你一个整数数组 nums
,返回出现最频繁的偶数元素。
如果存在多个满足条件的元素,只需要返回 最小 的一个。如果不存在这样的元素,返回 -1
。
示例 1:
输入:nums = [0,1,2,2,4,4,1] 输出:2 解释: 数组中的偶数元素为 0、2 和 4 ,在这些元素中,2 和 4 出现次数最多。 返回最小的那个,即返回 2 。
示例 2:
输入:nums = [4,4,4,9,2,4] 输出:4 解释:4 是出现最频繁的偶数元素。
示例 3:
输入:nums = [29,47,21,41,13,37,25,7] 输出:-1 解释:不存在偶数元素。
提示:
1 <= nums.length <= 2000
0 <= nums[i] <= 105
解题思路:
* 解题思路: * 把出现数字和次数统计到map中,然后遍历map的key, * 如果key不为偶数,则跳过; * 如果key<maxTimes,则跳过; * 如果key<maxTimes,则更新maxTimes和maxKey; * 如果key<maxKey,则更新maxKey;
代码:
public class Solution2404 {
public int mostFrequentEven(int[] nums) {
HashMap<Integer, Integer> map = new HashMap<>();
Arrays.stream(nums).boxed().forEach(integer -> map.put(integer, map.getOrDefault(integer, 0) + 1));
int maxTimes = 0;
int maxKey = -1;
for (Integer key : map.keySet()) {
if (key % 2 != 0) {
continue;
}
Integer time = map.get(key);
if (time < maxTimes) {
continue;
}
if (time > maxTimes) {
maxTimes = time;
maxKey = key;
continue;
}
if (key < maxKey) {
maxKey = key;
}
}
return maxKey;
}
}