出现最频繁的偶数元素【LC2404】
给你一个整数数组
nums,返回出现最频繁的偶数元素。如果存在多个满足条件的元素,只需要返回 最小 的一个。如果不存在这样的元素,返回
-1。
-
思路
使用哈希表记录每个偶数出现的次数,如果出现更大或者相同的出现次数时,更新结果
-
实现
class Solution { public int mostFrequentEven(int[] nums) { Map<Integer,Integer> counts = new HashMap<>(); int res = -1, maxFre = 0; for (int num : nums){ if ((num & 1) == 0){ counts.put(num, counts.getOrDefault(num, 0) + 1); if (counts.get(num) > maxFre){ res = num; maxFre = counts.get(num); }else if (counts.get(num) == maxFre){ res = Math.min(num, res); } } } return res; } }- 复杂度
- 时间复杂度:O(n)O(n)O(n)
- 空间复杂度:O(n)O(n)O(n)
- 复杂度

该问题通过遍历整数数组,使用哈希表记录每个偶数出现的频率。当找到出现次数大于当前最大频率的偶数或频率相等时,更新结果。若无满足条件的偶数,返回-1。算法的时间和空间复杂度均为O(n)。
936

被折叠的 条评论
为什么被折叠?



