阿里云开发者社区在线编程37.最强的团队
微wx笑 2020-07-12【算法】 5 0关键字: 阿里云 开发者社区 在线编程 团队
37.最强的团队概述:有一个阵营,里面有n个小队(1<=n<=100),每个小队都有他们的能力值ai(0<=i<n)。现在有一个紧急情况,需要从这些小队中选出连续的几个小队,组成一个最强的团队。
37.最强的团队
概述:
有一个阵营,里面有n个小队(1<=n<=100),每个小队都有他们的能力值ai(0<=i<n)。
现在有一个紧急情况,需要从这些小队中选出连续的几个小队,组成一个最强的团队。最强的团队的定义为这个团队的所有小队的平均能力值最高。如果有多个最强团队,则选包含小队最多的一个。
现在请你写个程序,输出这个最强的团队包含的小队的个数。
输入小队的数量n,和n个数,分别代表各小队的能力值ai
输出一个数表示这个最强团队包含的小队的个数
示例1
输入: 6 [1,2,3,3,2,1] 输出: 2
解题思路:
max 记录数组中的最大值
c 记录上一个值,用来判断是否连续出现,只有连续出现的相同数字才能组队。
最近返回最大值 max 包含的小队的个数。
正确解答
package solution37; import java.util.*; class Solution { public int solution(int n,int[] a) { int max = 0; int c = 0; Map<Integer, List<Integer>> map = new HashMap<Integer, List<Integer>>(); for (int i = 0; i < n; i++) { if (a[i] > max){ max = a[i]; } if (map.get(a[i]) != null) { if (c == a[i]){ map.get(a[i]).add(i); } } else { map.put(a[i], new ArrayList<Integer>()); map.get(a[i]).add(i); } c = a[i]; } return map.get(max).size(); } }
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/algorithm/2020-07-12/505.html