Your are given an array of positive integers nums.
Count and print the number of (contiguous) subarrays where the product of all the elements in the subarray is less than k.
Example 1:
Input: nums = [10, 5, 2, 6], k = 100 Output: 8 Explanation: The 8 subarrays that have product less than 100 are: [10], [5], [2], [6], [10, 5], [5, 2], [2, 6], [5, 2, 6]. Note that [10, 5, 2] is not included as the product of 100 is not strictly less than k.
Note:
0 < nums.length <= 50000.0 < nums[i] < 1000.0 <= k < 10^6.class Solution {
public:
int numSubarrayProductLessThanK(vector<int>& nums, int k) {
int count = 0,mult = 1;
queue<int> q;
for(int i = 0;i < nums.size();i++){
while(nums[i]*mult >= k && q.size()){
mult/=q.front();
q.pop();
}
if(nums[i]*mult < k){
mult*=nums[i];
q.push(nums[i]);
}
count+=q.size();
}
return count;
}
};
本文介绍了一种算法,用于计算给定整数数组中所有连续子数组的数量,这些子数组的元素乘积小于指定阈值k。通过使用滑动窗口的方法,确保了高效地遍历数组并计算符合条件的子数组数量。
532

被折叠的 条评论
为什么被折叠?



