题解 | #数组中出现次数超过一半的数字#

数组中出现次数超过一半的数字

https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163

思路

构建一个哈希表,遍历数组,将遇到的数字存入哈希表中,哈希表中的键为数组中的值,值为该数组中值出现的次数,当遍历的同时判断该次数是否超过了数组大小的一半,如果超过了直接返回该元素,如果直到结束都没有找到,根据题意肯定是当数组中只有一个元素时才会出现这种情况,所以直接返回数组第一个元素。

代码

import java.util.HashMap;
import java.util.Map;
public class Solution {
    public int MoreThanHalfNum_Solution(int [] array) {
        // 创建一个哈希表
        Map<Integer, Integer> result = new HashMap<>(array.length / 2);
        // 遍历数组将遇到的元素加入哈希表中
        for (int i = 0; i < array.length; i++) {
            // 如果哈希表中有该数据,则将其值自增
            if (result.containsKey(array[i])) {
                // 判断当前数据出现次数是否超过数组一半长度
                if (result.get(array[i]) + 1 > array.length / 2) {
                    return array[i];
                }
                result.put(array[i], result.get(array[i]) + 1);
            }
            // 如果该哈希表中没有该数据则将其添加到哈希表中
            else {
                result.put(array[i], 1);
            }
        }
        return array[0];
    }
}
全部评论

相关推荐

HNU_fsq:建议直接出国,这简历太6了。自愧不如
点赞 评论 收藏
分享
头像
11-07 01:12
重庆大学 Java
精致的小松鼠人狠话不多:签哪了哥
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 10:52
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务