美文网首页
连续子区间和

连续子区间和

作者: 陈大吼 | 来源:发表于2022-08-19 09:37 被阅读0次

    小M给你一串含有c个正整数的数组, 想让你帮忙求出有多少个下标的连续区间, 它们的和大于等于x。

    输入描述:
    第一行两个整数c x(0 < c <= 1000000, 0 <= x <= 100000000)
    第二行有c个正整数(每个正整数小于等于100)。

    输出描述:
    输出一个整数,表示所求的个数。

    输入例子1:
    3 6
    2 4 7
    输出例子1:
    4
    例子1说明:
    对于有3个整数构成的数组而言,总共有6个下标连续的区间,他们的和分别为:
    2 = 2
    4 = 4
    7 = 7
    2 + 4 = 6
    4 + 7 = 11
    2 + 4 + 7 = 13
    其中有4个和大于等于6,所以答案等于4。

    输入例子2:
    2 0
    2 4
    输出例子1:
    3

    import java.util.*;
    public class Main {
        public static void main(String[] args) {
            Scanner scaner = new Scanner(System.in);
            int n = scaner.nextInt();
            int x = scaner.nextInt();
            int[] a = new int[n];
            for(int i=0;i<n;i++){
                a[i] = scaner.nextInt();
            }
            //滑动窗口算法
            long count = 0, sum = 0; //这里要用long,否则无法通过所有测试用例,数值可能超过int上限
            int lIndex = 0, rIndex = 0;
            while(rIndex < n) {
                sum += a[rIndex];
                while(sum >= x && lIndex<=rIndex) {//必须得有lIndex<=rIndex,否则当x为0时,会计算错误
                    count += (n-rIndex);
                    sum -= a[lIndex];
                    lIndex++;
                }
                rIndex++;
            }
            System.out.println(count);
        }
    }
    

    相关文章

      网友评论

          本文标题:连续子区间和

          本文链接:https://www.haomeiwen.com/subject/dunygrtx.html