题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是定义了一种计算子数组分数的方式,即数组元素之和与数组长度之积,要求给出一个数组内,所有分数小于 K 的子数组数目。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
long long countSubarrays(vector<int>& nums, long long k) {
int left = 0;
long long ans = 0;
long long sum = 0;
for (int right = 0; right < nums.size(); right++) {
sum += nums[right];
while(sum *(right-left+1) >= k) {
sum -= nums[left++];
}
ans += right-left+1;
}
return ans;
}
};