给你一个整数数组 nums
,返回出现最频繁的偶数元素。
如果存在多个满足条件的元素,只需要返回 最小 的一个。如果不存在这样的元素,返回 -1
。
输入: nums = [0,1,2,2,4,4,1] 输出: 2 解释: 数组中的偶数元素为 0、2 和 4 ,在这些元素中,2 和 4 出现次数最多。 返回最小的那个,即返回 2 。
输入: nums = [4,4,4,9,2,4] 输出: 4 解释: 4 是出现最频繁的偶数元素。
输入: nums = [29,47,21,41,13,37,25,7] 输出: -1 解释: 不存在偶数元素。
1 <= nums.length <= 2000
0 <= nums[i] <= 105
use std::collections::HashMap;
impl Solution {
pub fn most_frequent_even(nums: Vec<i32>) -> i32 {
let mut count = HashMap::new();
let mut max_count = 0;
let mut ret = -1;
for num in nums.iter().filter(|&&x| x % 2 == 0) {
count.entry(num).and_modify(|x| *x += 1).or_insert(1);
}
for (&k, v) in count {
if v > max_count || (v == max_count && k < ret) {
max_count = v;
ret = k;
}
}
ret
}
}