阿里云开发者社区在线编程45.最活跃的数
微wx笑 2020-07-13【算法】 7 0关键字: 阿里云 开发者社区 在线编程 活跃
最活跃的数概述:现有一个包含n个整数的序列(1<=n<=1e5),n个数分别是a1,a2,a3...an(0<=ai<=1e5),现在对于每个ai都有3种操作,一种是使ai+1,一种是使ai-1,还有一种是不变,问在对这n个
最活跃的数
概述:
现有一个包含n个整数的序列(1<=n<=1e5),n个数分别是a1,a2,a3...an(0<=ai<=1e5),现在对于每个ai都有3种操作,一种是使ai+1,一种是使ai-1,还有一种是不变,问在对这n个数操作完后,出现次数最多的数的出现次数是多少。
输入序列中整数个数n,和n个整数[a1,a2,…,an]
输出一个数,表示在操作过后的出现次数最多的数的出现次数
示例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; } }
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/algorithm/2020-07-13/506.html