记录每日LeetCode 2404.出现最频繁的偶数元素 Java实现

题目描述:

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

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

初始代码:

class Solution {
    public int mostFrequentEven(int[] nums) {

    }
}

示例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
解释:不存在偶数元素。

参考答案:

class Solution {
    public int mostFrequentEven(int[] nums) {
        Map map = new HashMap<>();
        //解决非偶数的情况下
        int count = 0;
        for (int x : nums) {
            //存在就返回键为x的value 不存在则默认放入键为x 值为0
            if (x % 2 == 0) map.put(x, map.getOrDefault(x, 1) + 1);
            else count++;
        }
        if(count == nums.length) return -1;
        //解决偶数的情况下
        int key = -1,value = 0;
        for (Map.Entry entry : map.entrySet()) {
            //当遍历到的value值最大直接返回即可 然后value值与上一个相同就比较键的大小
            if(entry.getValue() > value || entry.getValue() == value && key > entry.getKey()){
                key = entry.getKey();
                value = entry.getValue();
            }
        }
        return key;
    }
}

你可能感兴趣的:(leetcode,算法,职场和发展)