2404. 出现最频繁的偶数元素
难度:简单
时间:2023/04/13
给你一个整数数组 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 <= 20000 <= nums[i] <= 10^5
解题思路:
- 使用哈希表统计所有偶数元素出现的次数,然后找出出现次数最多且值最小的偶数元素。
- Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。
- Counter() 是 collections 库中的一个函数,可以用来统计一个 python 列表、字符串、元组等可迭代对象中每个元素出现的次数,并返回一个字典。可以看下常用的 Counter() 例子:
from collections import Counter
nums = [1, 1, 2, 2, 6, 6, 7, 8]
count = Counter(nums)
for k, v in count.items():
print(k, v)
print(count)
class Solution:
def mostFrequentEven(self, nums: List[int]) -> int:
cnt = Counter(x for x in nums if x % 2 == 0)
ans, mx = -1, 0
for x, v in cnt.items():
if v > mx or (v == mx and ans > x):
ans, mx = x, v
return ans
-
golang的map是一种无序的基于key-value的数据结构,Go语言中map是引用类型,必须初始化才能使用。
-
1、map的定义
- 定义: map[KeyType]ValueType
- 其中,KeyType表示键的类型,ValueType表示对应值的类型。
-
map类型变量默认初始值为 nil,要使用make()函数分配内存。
- 语法 : make(map[KeyType]ValueType, [cap])
- 其中,cap为map的容量,参数不是必须给的。
func mostFrequentEven(nums []int) int {
cnt := map[int]int{}
for _, x := range nums {
if x%2 == 0 {
cnt[x]++
}
}
ans, mx := -1, 0
for x, v := range cnt {
if mx < v || (mx == v && x < ans) {
ans, mx = x, v
}
}
return ans
}