https://leetcode.cn/problems/subarray-product-less-than-k/
给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目。
示例 1:
输入:nums = [10,5,2,6], k = 100
输出:8
示例 2:
输入:nums = [1,2,3], k = 0
输出:0
class Solution:
def numSubarrayProductLessThanK(self, nums: List[int], k: int) -> int:
slow, fast, ret, prod = 0, 0, 0, 1
while fast < len(nums):
prod *= nums[fast]
while slow <= fast and prod >= k:
prod //= nums[slow]
slow += 1
# 窗口每次移动后,res都可以增加 fast - slow + 1个子数组
# 这句话看不懂
if slow <= fast and prod < k:
ret += fast - slow + 1
fast += 1
return ret