解题思路:遍历数组,用哈希表存储每个数字出现的次数。当出现次数等于长度的一半时,就可以返回该数字了;否则,返回0。注意:数组为空和数组长度为1的情况;另外,在哈希表中若用整型作为key,需用Integer.valueOf()将其转化下,不然易于索引混淆。
import java.util.*; public class Solution { public int MoreThanHalfNum_Solution(int [] array) { int num=0; if(array!=null){ num=array.length/2; HashMap<Integer,Integer> count=new HashMap<>(); int m=0; for(int i=0;i<array.length;i++){ if(count.containsKey(Integer.valueOf(array[i]))){ m=count.get(Integer.valueOf(array[i])); if(m==num){ return array[i]; } count.replace(Integer.valueOf(array[i]),m+1); } else{ count.put(Integer.valueOf(array[i]),1); if(num==0){ return array[i]; } } } return 0; } return num; } }