美文网首页
主要元素

主要元素

作者: WAI_f | 来源:发表于2020-06-06 00:08 被阅读0次

    题目:

    数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。

    示例:

    输入:[1,2,5,9,5,9,5,5,5]
    输出:5

    解题方法:

    经常出现类似的题目,都是求出现次数的,以前的做法就是开一个数组,数组的索引就是要统计的数字,数组值用来统计数字出现次数,但是这样也有一个问题,就是需要知道数字的范围,或者说数字范围不能太大,所以字符串类问题经常用这个方法,对于数字就不是很好处理了。
    但是我还是不太想放弃,想到了用map,但是怎么用一直搞不清楚,因为不知道怎么统计数字出现次数,看了题解以后,大致明白了,关键点就是map会自动初始化value。虽然最后的运行效果只能说一般,但是这个方法还是在刷题中有很多机会用到的。

    代码和结果:

    class Solution {
    public:
        int majorityElement(vector<int>& nums) {
            map<int,int> ans;
            for(int i=0;i<nums.size();i++)
            {
                ans[nums[i]]++;
            }
            for(map<int,int>::iterator mlt=ans.begin();mlt!=ans.end();mlt++)
            {
                if(mlt->second>nums.size()/2)
                {
                    return mlt->first;
                }
            }
            return -1;
        }
    };
    
    运行结果:

    原题链接:https://leetcode-cn.com/problems/find-majority-element-lcci/

    相关文章

      网友评论

          本文标题:主要元素

          本文链接:https://www.haomeiwen.com/subject/sziizhtx.html