阿里云开发者社区在线编程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



