题目
给定一个含有N个正整数的数组, 求出有多少个连续区间(包括单个正整数), 它们的和大于等于x。
输入描述
第一行两个整数N x(0 < N <= 100000, 0 <= x <= 10000000)
第二行有N个正整数(每个正整数小于等于100)。
输出描述
输出一个整数,表示所求的个数。
注意:此题对效率有要求,暴力解法通过率不高,请考虑高效的实现方式。
用例
输入
3 7
3 4 7
输出
4
解题思路
通过两个指针left和right表示当前窗口的左右边界,并使用currentSum记录窗口内的和。我们不断移动右边界扩大窗口,直到currentSum大于等于给定值x。每当找到一个满足条件的窗口时,计算从当前左边界到数组末尾的所有满足条件的区间数,然后移动左边界缩小窗口,并重复上述过程,直到遍历完整个数组。这样可以在O(N)时间复杂度内高效地计算出所有满足条件的连续区间数。
代码