题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
//直接用map记录下,然后再遍历map,判断是否存在一个数字的count大于长度的一半
int MoreThanHalfNum_Solution(vector<int> numbers) {
if(numbers.size()==0)return 0;
else if(numbers.size()==1)return numbers[0];
else if(numbers.size()==2)return 0;
map<int,int> the_map;
for(auto m:numbers)
{
if(the_map.find(m)!=the_map.end())
{
the_map[m]++;
}
else
{
the_map[m]=1;
}
}
for(auto m:the_map)
{
if(m.second>numbers.size()/2)
{
return m.first;
}
}
return 0;
}