(暴力枚举) $O(n)$
如果定义product 为从index i 到index j 的所有数的乘积,那么product 是随j增加增加,i 增加减少的,让i j 从右开始,不断调动就好了
时间复杂度分析:blablabla
C++ 代码
class Solution {
public:
int numSubarrayProductLessThanK(vector<int>& nums, int k) {
if (k <= 1){
return 0;
}
int result = 0;
int product = 1;
int i = 0;
int j = 0;
for (; j < nums.size(); j++){
product *= nums[j];
while(product >=k){
product /= nums[i++];
}
result += j - i + 1;
}
return result;
}
};