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;
    }
}