解题思路:遍历数组,用哈希表存储每个数字出现的次数。当出现次数等于长度的一半时,就可以返回该数字了;否则,返回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;
    }
}