713. Subarray Product Less Than K
题目
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:
Note:
-
0 < nums.length <= 50000
. -
0 < nums[i] < 1000
. -
0 <= k < 10^6
. -
思路本题思路比较巧妙,维护两个索引j和i,每次统计当乘积小于k时j-i的数量。
代码class Solution { public: int numSubarrayProductLessThanK(vector<int>& nums, int k) { if(k<=1) return 0; int product=1,i=0,j=0,count=0; while(j<nums.size()) { product*=nums[j++]; while(product>=k) product/=nums[i++]; cout<<(j-i)<<endl; count+=j-i; } return count; } };