LeetCode 求众数 C++

 利用关联容器map,<key,value>中令数组中的数字为key,数字出现的次数为value

当数字在map中未出现过时,将数字压入,并将其value赋值1,如果出现过,则将其value递增

最后遍历map,将value值大于众数的数据输出

代码如下:

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        auto len =nums.size();
        int count=len/2;
        map<int,int> m;
        int tmp=0;
        for(int i=0;i<len;i++)
        {
            auto ret=m.insert({nums[i],1});  //insert返回一个迭代器,pair类型,第一个数据为迭代器指向指定元素位置,
                                            //第二个为插入是否成功的bool值
            if(!ret.second)                 //ret保存insert返回的值,是一个pair,
            {
                ++ret.first->second;  // ret.first解引用指向指定元素的位置 ,ret.first->second为该元素的value
                                      //如果已经存在该元素,则将该元素的value递增                
            }           
        }
        auto map_it=m.cbegin();
        for(;map_it!=m.end();++map_it)
        {
            if(map_it->second>count)
            {
                tmp=map_it->first;
                break;
            }
         
        }
        
      return tmp;
    }
};

每天进步一点

猜你喜欢

转载自blog.csdn.net/zlb666/article/details/85801359