(一)题目描述
(二)思想方法
首先使用map,将数组中不重复的数字作为主键,遍历数组,若数组中数字在map中存在,将键为该数字的值加一,不存在则插入map,该数字作为主键,其值为1,直到有数字的值大于N/2;结束。
(三)代码实现
class Solution {
public:
int majorityElement(vector<int>& nums)
{
int major = 0;
int max = nums.size() / 2;
map<int, int > maps;
for (int i = 0; i < nums.size(); i++)
{
map<int, int>::iterator it;
it = maps.find(nums[i]);
if (it == maps.end())
{
maps.insert(make_pair(nums[i], 1));
if (maps[nums[i]] > max)
{
major = nums[i];
break;
}
}
else
{
maps[nums[i]]++;
if (maps[nums[i]] > max)
{
major = nums[i];
break;
}
}
}
return major;
}
};