猿辅导--课程质量建设

辅导课堂在推进质量建设,需要分析每堂直播课的用户报障数量。

当连续多个课堂的报障数量之和大于一个数s的时候,系统发出警报,计算最长连续的没有触发警报的课程数量。

输入描述:

第一行两个整数: n, s

第二行n的整数: 每个整数ai表示该课堂的报障数量

对于10%的数据,满足1<=n<2*10^3

对于100%的数据,满足1<=n<=2*10^6, 1<=ai<=10^2

input: 
3 2
1 1 3
output:
2
说明: 前两堂课的报障数量为1,总和为2, 没有触发警报
input: 
6 5
5 1 1 1 2 3
output:
4
说明: 中间4堂课的报障数量之和为1+1+1+2=5, 没有触发警报

分析: 此问题可简化为和不超过s的最长连续子数组问题,设置两个指针left, right,遍历

    //课程质量建设
    //n, s
    //n个数字组成的序列,最长连续子序列和<=s

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int s = scanner.nextInt();

        int[] arr = new int[n];
        int[] dp = new int[n];
        int res = 0;

        for(int i = 0; i < n; i++) {
            arr[i] = scanner.nextInt();
        }

        int sum = 0, left = 0, right = 0;

        for(; right < n; right++) {
            sum += arr[right];

            if (sum <= s) {
                res = Math.max(res, right-left+1);
            }

            while (left < right && sum > s) {
                sum -= arr[left++];
            }
        }

        System.out.println(res);
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值