题目:
数组中出现次数超过一半的数字_牛客题霸_牛客网 (nowcoder.com)
思路:
目标数据超过数组长度的一半,那么对数组,我们同时去掉两个不同的数字,到最后剩下的一个数就是该数字。
代码:
class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers)
{
int number = numbers[0];
int times = 1;//出现的次数
for(int i = 1;i<numbers.size();i++)
{
if(times == 0)
{
number = numbers[i];
times = 1;
}
if(number == numbers[i])
{
times++;
}
else
{
times--;
}
}
int count = 0;
for(int e : numbers)
{
if(e == number)
{
count++;
}
}
if(count < numbers.size()/2)
{
assert(1);
}
return number;
}
};