平均数为k的最长连续子数组 java代码

给定n正整数组成的数组,求平均数正好等于 k 的最长连续子数组的长度。

时间限制:C/C++ 2秒,其他语言4秒

空间限制:C/C++ 256M,其他语言512M

输入描述:

第一行输入两个正整数和,用空格隔开。第二行输入个正整数,用来表示数组。

输出描述:

如果不存在任何一个连续子数组的平均数等于,则输出-1。否则输出平均数正好等于  的最长连续子数组的长度。

示例1

输入例子:

5 2
1 3 2 4 1

输出例子:

3

例子说明:

取前三个数即可,平均数为2。
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int k=in.nextInt();
        int[] nums=new int[n+5];
        Map<Long,Integer> map=new HashMap<Long,Integer>();
        for(int i=1;i<=n;++i){
            nums[i]=in.nextInt();
            nums[i]-=k;
        }
        int maxLen=-1;
        long sum=0;
        for(int i=0;i<=n;++i){
            sum+=nums[i];
            if (map.containsKey(sum)){
                maxLen=Math.max(maxLen,i-map.get(sum));
            }else map.put(sum,i);
        }
        System.out.println(maxLen);
    }


}

全部评论
太牛了,大佬,根本想不到
点赞 回复 分享
发布于 03-30 17:14 上海

相关推荐

不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务