入门力扣自学笔记258 C++ (题目编号:2404)

2404. 出现最频繁的偶数元素

题目:

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

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


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


提示:

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


来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/most-frequent-even-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


思路:

首先,我们遍历容器vector,找到偶数的元素,以此为下标存到一个map中,并在map中的val变为偶数元素出现的个数。

其次,我们遍历map,找到出现最多次数的偶数元素,并将结果存储到ans中。如果没有的话,就返回-1。

最后,返回最终结果ans即可。


代码:

class Solution {
public:
    int mostFrequentEven(vector& nums) {
        map sup;
        for(int i = 0;i < nums.size();i++)
        {
            if(nums[i] % 2 == 0)
                sup[nums[i]]++;
        }
        int ans = -1,count = 0;
        for(map::iterator i = sup.begin();i != sup.end();i++)
        {
            if(i -> second > count)
            {
                ans = i -> first;
                count = i -> second;
            }
        }
        return ans;
    }
};

你可能感兴趣的:(力扣算法学习,c++,leetcode,算法)