描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。你可以假设数组是非空的,并且给定的数组总是存在多数元素。1<=数组长度<=50000。


可以使用类似二分查找的方式去做该题。
把数组进行排序,众数一定会在数组的中间,所以,要对数组进行二分查找,得到最后的结果就是众数。

class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
sort(numbers.begin(), numbers.end());
int bs=numbers[numbers.size()/2];
int i=0;
for(const int k:numbers)
{
if(bs==k)
{
++i;
}
}
if(i>numbers.size()/2)
{
return bs;
}
return 0;
}
};</int>