2404.出现最频繁的偶数元素
链接:2404.出现最频繁的偶数元素
难度:Easy
标签:数组、哈希表、计数
简介:给你一个整数数组 nums ,返回出现最频繁的偶数元素。如果存在多个满足条件的元素,只需要返回 最小 的一个。如果不存在这样的元素,返回 -1 。
题解 1 - cpp
- 编辑时间:2023-04-13
- 执行用时:56ms
- 内存消耗:37.1MB
- 编程语言:cpp
- 解法介绍:遍历。
class Solution {
public:
int mostFrequentEven(vector<int>& nums) {
unordered_map<int, int> m;
int res = -1, nmax = -1;
for (auto &num : nums) {
if (num % 2 == 0) {
m[num]++;
if (m[num] > nmax || m[num] == nmax && num < res) res = num, nmax = m[num];
}
}
return res;
}
};
题解 2 - python
- 编辑时间:2023-04-13
- 执行用时:84ms
- 内存消耗:15.2MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
def mostFrequentEven(self, nums: List[int]) -> int:
m = Counter()
res = nmax = -1
for num in nums:
if num % 2 == 0:
m[num] += 1
if m[num] > nmax or m[num] == nmax and num < res:
res = num
nmax = m[num]
return res
题解 3 - rust
- 编辑时间:2023-04-13
- 执行用时:8ms
- 内存消耗:2.1MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
pub fn most_frequent_even(nums: Vec<i32>) -> i32 {
let mut m = std::collections::HashMap::<i32, i32>::new();
let mut res = -1;
let mut nmax = -1;
for num in nums {
if num % 2 == 0 {
let item = m.entry(num).or_insert(0);
*item += 1;
if *item > nmax || *item == nmax && num < res {
res = num;
nmax = *item;
}
}
}
res
}
}