【每日一题】数组中出现次数最多的两个数

给定数组{2,3,2,5,5,5,1},本题要求找到出现次数最多的两个数。从求众数思路出发,使用Map记录元素及其频率,再将Map的Entry转为List并按频率排序,从而实现找到频率最高的前两个数。" 75093929,5871486,NP问题解析:STINGY SAT、EXACT 4SAT与图论,"['算法', '复杂度理论', '图论', 'NP完全', '逻辑']
摘要由CSDN通过智能技术生成

题目描述:给定一个数组{2,3,2,5,5,5,1},求其中出现次数最多的两个数。

思路:这题是在求众数的题目上的改变,是求出现次数最多的前两个数。
对于求众数,思路很简单,用一个map用来存放值(key),以及出现的次数(value),遍历一遍map,找出value值最大的那个数即可。

求最多的一个数:

public static void main(String[] args) {
   
        int[] nums = {
   2,3,2,5,5,5,1};
        Map<Integer, Integer> map = new HashMap<>();
        for(int i = 0; i < nums.length; i++){
   
            if(map.containsKey(nums[i])){
   
                map.put(nums[i], map.get(nums[i]) 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值