题目:
给定一个正整数数组 nums。找出该数组内乘积小于 k 的连续的子数组的个数。
思路:
滑动窗口,思想类似于leetcode 992
解答:
class Solution:
def numSubarrayProductLessThanK(self, nums: List[int], k: int) -> int:
n=len(nums)
if k==1:
return 0
left=0
right=0
#mul用来记录滑动窗口中各数的乘积
mul=1
#res记录A中乘积小于k的连续的子数组 的数目
res=0
#滑动窗口,含left和right
while right<n:
mul=mul*nums[right]
while mul>=k and left<=right:
mul=mul//nums[left]
left+=1
if mul<k:
res+=right-left+1
right+=1
return res