import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param numbers int整型一维数组
* @return int整型
*/
public int MoreThanHalfNum_Solution (int[] numbers) {
// write code here
// 核心思想:创建哈希表统计对应元素的出现次数
// 算法的实践复杂度O(N),空间复杂度O(N)(空间复杂度为O(1)的方法暂时没有想出来)
// 1.创建哈希表
HashMap<Integer, Integer> hm = new HashMap<>();
// 2.遍历数组,记录哈希表
for (int cur : numbers) {
if (hm.containsKey(cur)) {
// 表中记录过当前key
int count = hm.get(cur);
count++;
hm.put(cur, count);
} else {
// 表中没有及路过当前key
hm.put(cur, 1);
}
}
// 3.找到表中出现次数最高的那个key
int max = 0;
int result = numbers[0];
// 3.1 将Map转化成Set,然后使用for遍历,方便使用外部的变量记录结果(匿名内部类不能使用外部变量记录)
Set<Map.Entry<Integer, Integer>> entrySet = hm.entrySet();
for (Map.Entry<Integer, Integer> entry : entrySet) {
if (entry.getValue() > max) {
max = entry.getValue();
result = entry.getKey();
}
}
return result;
}
}