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 @ 2022-09-17 13:41  tothk  阅读(64)  评论(0编辑  收藏  举报