给你一个整数数组 nums 返回出现最频繁的偶数元素。如果存在多个满足条件的元素只需要返回 最小 的一个。如果不存在这样的元素返回 -1 。
首先,我们需要统计数组中每个元素出现的频次。可以使用一个字典来记录每个元素以及对应的频次。
然后,遍历字典,找到频次最高的偶数元素,如果存在多个频次相同的偶数元素,返回最小的一个。如果没有找到偶数元素,返回 -1。
下面是使用 Python 实现的代码:
def findMostFrequentEvenElement(nums):
freq = {}
for num in nums:
if num % 2 == 0:
if num in freq:
freq[num] += 1
else:
freq[num] = 1
most_frequent_even_element = None
max_freq = 0
for num, f in freq.items():
if f > max_freq or (f == max_freq and num < most_frequent_even_element):
most_frequent_even_element = num
max_freq = f
if most_frequent_even_element is None:
return -1
else:
return most_frequent_even_element
这个算法的时间复杂度是 O(n),其中 n 是数组的长度。遍历数组需要 O(n) 的时间,遍历字典需要 O(k) 的时间,其中 k 是字典的大小,最坏情况下 k 可能等于 n/2,因此时间复杂度是 O(n)。空间复杂度是 O(k),即字典的大小。
原文地址: https://www.cveoy.top/t/topic/i2Xo 著作权归作者所有。请勿转载和采集!