class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
if(numbers.empty()){
return 0;
}
// 遍历每个元素,并记录次数;若与前一个元素相同,则次数加1,否则次数减1
int result = numbers[0];
int times = 1;
for(int i = 1; i < numbers.size(); ++i){
if(times == 0){
// 更新result的值为当前元素,并置次数为1
result = numbers[i];
times = 1;
}
else if(numbers[i] == result){
times++;
}
else{
times--;
}
}
// 判断result是否符合条件,即出现次数大于数组长度的一半
times = 0;
for(int i = 0; i < numbers.size(); ++i)
{
if(numbers[i] == result){
times++;
}
}
return (times > (numbers.size() >> 1)) ? result : 0;
}
};
class Solution {//复杂度大一些
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
int size=numbers.size();
if(size==0){
return 0;
}
for(int i=0;i<size;i++){
int k=0;
for(int j=0;j<size;j++){
if(numbers[i]==numbers[j]){
k++;
}
}
if(k>size/2){
return numbers[i];
}
}
return 0;
}
};