要求数组中出现次数超过一半的数字,可以遍历一遍数组,同时记录其出现的次数,把数组分为两部分,一个是出现次数超过一半的数字,另一个是其他数字,用其他数字来抵消该数字出现的次数,如果有该次数,times就一定不为零。
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
if(array.length<=0)
return 0;
int result=array[0];
int times=1;
for(int i=1;i<array.length;i++){
if(times==0){
result=array[i];
times=1;
}else{
if(array[i]==result){
times++;
}else{
times--;
}
}
}
times=0;
for(int i=0;i<array.length;i++){
if(array[i]==result){
times++;
}
}
if(times*2>array.length){
return result;
}else{
return 0;
}
}
}