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

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

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

import java.util.*;


public class Solution {
    //利用value找到对应的key
    public  int getKey(HashMap<Integer, Integer> map, Integer value) {
        int key = 0;
        for (Map.Entry<Integer, Integer> e1 : map.entrySet()) {
            if (value == e1.getValue()) {
                key = e1.getKey();
            }
        }
        return key;
    }
    public int MoreThanHalfNum_Solution (int[] numbers) {
        // write code here
        HashMap<Integer, Integer> h1 = new HashMap<>();
        for (int i = 0; i < numbers.length; i++) {
            //这里 如果numbers[i]在h1里面则对应的value++;反之,则初始化为1
            h1.merge(numbers[i], 1, (oldvalue, newvalue) -> ++oldvalue);
        }
        Integer maxValue = 0;
        Integer maxKey = 0;
        //遍历HashMap 找到最大的value
        for (Map.Entry<Integer, Integer> e1 : h1.entrySet()) {
            if (maxValue < e1.getValue()) {
                maxValue = e1.getValue();
            }
        }
	  //判断出现次数最大的数字 是否超过数组长度的一半
        if (maxValue >= numbers.length / 2) {
            maxKey = getKey(h1, maxValue);
        }
        return maxKey;
    }
}

全部评论

相关推荐

hwwhwh:同双非,有大厂实习其实也没啥用,主要看运气,等就行了
点赞 评论 收藏
分享
10-10 01:10
已编辑
深圳大学 测试开发
面了100年面试不知...:六月到九月,四个项目一个实习,是魔丸吗
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务