2404. 出现最频繁的偶数元素【哈希表】

题目

给你一个整数数组 nums ,返回出现最频繁的偶数元素。

如果存在多个满足条件的元素,只需要返回 最小 的一个。如果不存在这样的元素,返回 -1

难度:简单

提示:

  • 1 <= nums.length <= 2000
  • 0 <= nums[i] <= 105

题解

利用哈希表统计即可,同时因为数据量不大,为10的五次方,所以也可以直接用数组装内容判断也可

class Solution {
    public int mostFrequentEven(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] % 2 == 0) {
                map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
            }
        }
        if (map.size() == 0) {
            return -1;
        }
        Map.Entry<Integer, Integer> res = null;
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            if (res == null) {
                res = entry;
            } else if (entry.getValue() > res.getValue()) {
                res = entry;
            } else if (entry.getValue().equals(res.getValue())) {
                if (entry.getKey() < res.getKey()) {
                    res = entry;
                }
            }
        }
        return res.getKey();
    }
}

复杂度分析

  • 时间复杂度:O(N)
  • 空间复杂度:O(N)
posted @   tothk  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示