1、利用map,遍历数组记录下每个数字出现的次数
import java.util.Map;
import java.util.HashMap;
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
Map<Integer,Integer> m = new HashMap();
for(int i=0;i<array.length;i++)
{
if(!m.containsKey(array[i]))
m.put(array[i],1);
else
m.put(array[i],m.get(array[i])+1);
}
for(Map.Entry entry : m.entrySet())
{
if((int)entry.getValue()>(array.length/2))
return (int)entry.getKey();
}
return 0;
}
}
2、利用如果存在,则该数出现的次数比其他所有书出现次数的总和要大
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
if(array.length<1) return 0;
int num = array[0];
int count =1;
int countMoreThanHalf=0;
for(int i=1;i<array.length;i++)
{
if(count==0)
{
num = array[i];
count=1;
}
else if(array[i]==num)
count++;
else
{
count--;
}
}
//检查是否超过数组长度的一半
for(int i=0;i<array.length;i++)
{
if(array[i]==num)
countMoreThanHalf++;
}
if(countMoreThanHalf>array.length/2) return num;
return 0;
}
}