阿里云开发者社区在线编程45.最活跃的数
微wx笑
2020-07-13【算法】
260
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
1 2 3 4 5 | 输入: 8 [3,2,1,5,3,4,9,5] 输出: 5 |
正确解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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