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

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

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

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

37.最强的团队SkH编程技术_踩坑日志_进阶指南_无知人生

概述:

有一个阵营,里面有n个小队(1<=n<=100),每个小队都有他们的能力值ai(0<=i<n)。SkH编程技术_踩坑日志_进阶指南_无知人生


SkH编程技术_踩坑日志_进阶指南_无知人生

现在有一个紧急情况,需要从这些小队中选出连续的几个小队,组成一个最强的团队。最强的团队的定义为这个团队的所有小队的平均能力值最高。如果有多个最强团队,则选包含小队最多的一个。SkH编程技术_踩坑日志_进阶指南_无知人生


SkH编程技术_踩坑日志_进阶指南_无知人生

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

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

输出一个数表示这个最强团队包含的小队的个数SkH编程技术_踩坑日志_进阶指南_无知人生

示例1

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

解题思路:

max 记录数组中的最大值SkH编程技术_踩坑日志_进阶指南_无知人生

c 记录上一个值,用来判断是否连续出现,只有连续出现的相同数字才能组队。SkH编程技术_踩坑日志_进阶指南_无知人生

最近返回最大值 max 包含的小队的个数。SkH编程技术_踩坑日志_进阶指南_无知人生

正确解答

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笑 创作,采用 CC BY-NC 4.0 许可协议。 非商业性使用可自由转载、引用、甚至修改,但需署名作者且注明出处。

很赞哦! () 有话说 ()