方法:哈希表
哈希表是一个按键值对存储的数据结构,其中键key唯一,用其可以找到唯一的值value,访问时间是O(1),一般用于计数统计频率和判断某个元素是否出现过的问题。
本题就是典型的统计频率的问题,通过哈希表记录每个元素出现的次数,当某个元素的出现次数超过一半就返回。
步骤:
1、创建哈希表,key为数组的元素,value为出现的次数。
2、遍历一次数组,每次先判断该数是否出现过,若没出现过就将出现次数设为1,若出现过就将查询到的次数加一存入。
3、判断当前数字出现次数是否大于数组一半的长度,是则返回该数,否则继续步骤2的遍历。
4、若最后遍历完东都没找到,返回0
哈希表的常用方法:
1、mp.set(key,value)存入一个哈希键值对
2、mp.containsKey(key)返回bool值,判断某个key值是否存在
3、mp.get(key)获取key对应的value值
import java.util.*;
public class Solution {
public int MoreThanHalfNum_Solution (int[] numbers) {
if(numbers.length==0){
return 0;
}
HashMap<Integer,Integer> mp = new HashMap<Integer,Integer>();
for(int i=0;i<numbers.length;++i){
if(!mp.containsKey(numbers[i])){
mp.put(numbers[i],1);
}
else{
mp.put(numbers[i],mp.get(numbers[i])+1);
}
if(mp.get(numbers[i])>numbers.length/2){
return numbers[i];
}
}
return 0;
}
}


京公网安备 11010502036488号