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