基本逻辑:
-
有两个变量:候选人和票数,候选人就是数组中不同的元素,票数相当于记录数组中每种不同元素的票数,还没进行投票时投票人为-1,票数为0;
-
遍历数组相当于进行投票,
代码
/*
* @param numbers int整型一维数组
* @param numbersLen int numbers数组长度
* @return int整型
*/
int MoreThanHalfNum_Solution(int* numbers, int numbersLen ) {
int candidate = -1;
int votes = 0;
for(int i = 0; i < numbersLen; i++){
if(votes == 0){
candidate = numbers[i];
votes++;
}else{
if(candidate == numbers[i]){
votes++;
}
else{
votes--;
}
}
}
return candidate;
}