leetcode2404出现最频繁的偶数元素

  1. 题目描述
  2. 示例
  3. 实现逻辑
  4. 实现代码
  5. 联系作者
    1. 微信公众号
    2. QQ群

题目描述

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

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

示例

输入:nums = [0,1,2,2,4,4,1]
输出:2
解释:数组中的偶数元素为 0、2 和 4 ,在这些元素中,2 和 4 出现次数最多。
返回最小的那个,即返回 2 。

输入:nums = [4,4,4,9,2,4]
输出:4
解释:4 是出现最频繁的偶数元素。

输入:nums = [29,47,21,41,13,37,25,7]
输出:-1
解释:不存在偶数元素。

实现逻辑

采用哈希表计数的方法,一次遍历nums数组,对其中的偶数元素计数,并记录元素出现的次数和元素值,找出最大次数的最小元素值。

时间复杂度O(n)

实现代码

import java.util.HashMap;
import java.util.Map;

public class Solution2404 {
    public static int mostFrequentEven(int[] nums) {
        int result = Integer.MAX_VALUE;
        int numCount = -1;
        Map<Integer, Integer> map = new HashMap();
        for(int i=0; i<nums.length; i++){
            int num = nums[i];
            if(num%2==0){
                map.put(num, map.getOrDefault(num, 0)+1);
                if((map.get(num)>numCount) || (map.get(num)==numCount && num<result)){
                    result = num;
                    numCount = map.get(num);
                }
            }
        }
        if(numCount==-1){
            return -1;
        }
        return result;
    }

    public static void main(String[] args) {
        int nums[] = new int[]{29,47,21,41,13,37,25,7};
        int result = mostFrequentEven(nums);
        System.out.println(result);
    }
}

联系作者

微信公众号

xiaomingxiaola
(BossLiu)

QQ群

58726094


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 384276224@qq.com

×

喜欢就点赞,疼爱就打赏

日记本 网文世界