代码:
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param numbers int整型vector
* @return int整型
*/
int MoreThanHalfNum_Solution(vector<int>& numbers) {
int sz=numbers.size();
int result=numbers[0];
int times=0;
for(int i=0;i<sz;i++)//因为一开始times==1,因此i应该从1开始
{
if(times!=0)
{
if(numbers[i]!=result)
{
times--;
}
else//记录重复元素个数
{
times++;
}
}
else//众数与非众数相消完了,重新开始消除
{
result=numbers[i];
times=1;
}
}
//一般来讲最后的result不一定是符合要求的数字,但题目中保证数组中是有超过数组长度一半的数字的,因此不用遍历
return result;
}
};