算法您现在的位置是:首页 > 博客日志 > 算法

阿里云开发者社区在线编程45.最活跃的数

<a href='mailto:'>微wx笑</a>的头像微wx笑2020-07-13 15:52:09算法人已围观关键字: 阿里云  开发者社区  在线编程  活跃  

最活跃的数概述:现有一个包含n个整数的序列(1<=n<=1e5),n个数分别是a1,a2,a3...an(0<=ai<=1e5),现在对于每个ai都有3种操作,一种是使ai+1,一种是使ai-1,还有一种是不变,问在对这n个

最活跃的数56u编程技术_踩坑日志_进阶指南_无知人生

概述:56u编程技术_踩坑日志_进阶指南_无知人生

现有一个包含n个整数的序列(1<=n<=1e5),n个数分别是a1,a2,a3...an(0<=ai<=1e5),现在对于每个ai都有3种操作,一种是使ai+1,一种是使ai-1,还有一种是不变,问在对这n个数操作完后,出现次数最多的数的出现次数是多少。
输入序列中整数个数n,和n个整数[a1,a2,…,an]
输出一个数,表示在操作过后的出现次数最多的数的出现次数56u编程技术_踩坑日志_进阶指南_无知人生


56u编程技术_踩坑日志_进阶指南_无知人生

示例1

输入:
8
[3,2,1,5,3,4,9,5]
输出:
5

正确解答

package solution45;
import java.util.*;
class Solution {
    public void mapAdd(Map<Integer, List<Integer>> map, int num){
        if (map.get(num) != null) {
            map.get(num).add(num);
        } else {
            map.put(num, new ArrayList<Integer>());
            map.get(num).add(num);
        }
    }
    public int solution(int n,int[] nums) {
        //定义一个Map来保存每个数出现的次数
       Map<Integer, List<Integer>> map = new HashMap<Integer, List<Integer>>();
       for (int i = 0; i < n; i++) {
            mapAdd(map, nums[i]);
            mapAdd(map, nums[i]+1);
            mapAdd(map, nums[i]-1);
        }
        //查找出现次数最多的那个数
        int count = 0;
        for (Map.Entry<Integer, List<Integer>> entry : map.entrySet()) {
            if (entry.getValue().size() > count){
                count = entry.getValue().size();
            }
        }
        return count;
    }
}

56u编程技术_踩坑日志_进阶指南_无知人生

本文由 微wx笑 创作,采用 CC BY-NC 4.0 许可协议。 非商业性使用可自由转载、引用、甚至修改,但需署名作者且注明出处。

很赞哦! () 有话说 ()