[题目链接](剑指 Offer II 009. 乘积小于 K 的子数组 - 力扣(LeetCode) (leetcode-cn.com))
思路
-
采用双指针,左指针右指针一开始都指向数组第一个元素的位置
-
子数组个数:r-l+1(right指针到left指针之间子数组的个数)
代码
class Solution {
public int numSubarrayProductLessThanK(int[] nums, int k) {
int l = 0;
int sum = 1;
int count = 0;
for(int r = 0; r < nums.length; r++) {
sum *= nums[r];
while(sum >= k && l <= r) {
sum /= nums[l++];
}
count += r >= l ? r - l + 1 : 0; //(r-l+1表示r到l之间子数组的个数)
}
return count;
}
}