每一个超过一半的数抵消一个其他的数,最后剩下的数为超过一半的数。
class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
int len = numbers.size();
if(len == 0)
return 0;
int number = numbers[0];
int times = 1;
for(int i = 1; i < len; i++)
{
if(times == 0)
{
number = numbers[i];
times = 1;
continue;
}
if(numbers[i] == number)
times ++;
else
times--;
}
times = 0;
for(int i = 0; i < len; i++)
if(number == numbers[i])
times++;
if(times > len / 2)
return number;
else
return 0;
}
};