可以参考LeetCode原题: LeetCode 209. 长度最小的子数组
这道题求得不是最小长度,而是方案数,那么每当我们找到一个满足条件的区间[l,r]时,[l,r+1],[l,r+2],...,[l,n−1]也一定是满足条件的,因此对应的方案数就是n−r,其中n为数组长度,使用双指针一边移动一边计数即可。
const readline = require('readline');
给定一个含有N个正整数的数组,求出有多少连续区间(包括单个正整数),它们的和大于等于 x。
第一行为两个整数 N,x。(0<N≤100000,0≤x≤10000000)
第二行有 N 个正整数 (每个正整数小于等于 100)。
输出一个整数,表示所求的个数
注意:此题对效率有要求,暴力解法通过率不高,请考虑高效的实现方式。
输入
3 7
3 4 7
输出
4
说明:第一行的 3表示第二行数组输入 3个数,第一行的 7是比较数,用于判断连续数组是否大于该数;组合为 3+4; 3+4+7,4+7,7;都大于等于指定的 7;所以共四组。
输入
10 10000
1 2 3 4 5 6 7 8 9 10
输出
0
说明:所有元素的和小于 10000 ,所以返回 0。