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;
}
};
每天进步一点