一、hashmap:key放array[i],value放他出现的次数,大于数组长度的一半时,返回。
import java.util.HashMap;
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
int result=0;
if(array.length<=0) return result;
for(int i=0;i<array.length;i++){
if(map.containsKey(array[i])){//array[i]不是第一次出现了
map.put(array[i],map.get(array[i])+1);//值+1
}else{
map.put(array[i],1);
}
if(map.get(array[i])>array.length/2){
result=array[i];
break;
}
}
return result;
}
}
第二个方法
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
if(array.length<=0) return 0;
int num=array[0];
int count=1;
for(int i=0;i<array.length;i++){
if(array[i]==num) count++;
else count--;
if(count==0){
num=array[i];
count=1;
}
}//开始验证num是不是超过数组长度的一半
int temp=0;
for(int i=0;i<array.length;i++){
if(num==array[i]) temp++;
}
return temp>array.length/2?num:0;
}
}