题目:给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。
#include<iostream>
#include<vector>
#include<map>
using namespace std;
class Solution {
public:
int majorityElement(vector<int>& nums)
{
int max = 0; //保存最大次数
int majority = 0; //出现次数最多的数
map<int, int> num1; //map->first保存数,map->sceond保存该数出现的次数
for (auto& itr : nums)
{
int cnt = ++num1[itr]; //每次遍历到这个数,就给这个数+1
if (cnt > max)
{
max = cnt; //替换最大次数
majority = itr; //替换最大值
}
}
return majority;
}
};
int main()
{
vector<int> nums = {1,2,2,2,2,3,3,4};
Solution a;
cout << a.majorityElement(nums) << endl;
return 0;
}