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

阿里云开发者社区在线编程37.最强的团队

<a href='mailto:'>微wx笑</a>的头像微wx笑 2020-07-12算法 5 0关键字: 阿里云  开发者社区  在线编程  团队  

37.最强的团队概述:有一个阵营,里面有n个小队(1<=n<=100),每个小队都有他们的能力值ai(0<=i<n)。现在有一个紧急情况,需要从这些小队中选出连续的几个小队,组成一个最强的团队。

37.最强的团队qQ1无知

概述:

有一个阵营,里面有n个小队(1<=n<=100),每个小队都有他们的能力值ai(0<=i<n)。qQ1无知


qQ1无知

现在有一个紧急情况,需要从这些小队中选出连续的几个小队,组成一个最强的团队。最强的团队的定义为这个团队的所有小队的平均能力值最高。如果有多个最强团队,则选包含小队最多的一个。qQ1无知


qQ1无知

现在请你写个程序,输出这个最强的团队包含的小队的个数。

输入小队的数量n,和n个数,分别代表各小队的能力值ai

输出一个数表示这个最强团队包含的小队的个数qQ1无知

示例1

输入:
6
[1,2,3,3,2,1]
输出:
2

解题思路:

max 记录数组中的最大值qQ1无知

c 记录上一个值,用来判断是否连续出现,只有连续出现的相同数字才能组队。qQ1无知

最近返回最大值 max 包含的小队的个数。qQ1无知

正确解答

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

很赞哦! () 有话说 ()