题目:
给定一个正整数数组 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
本文介绍了一种使用滑动窗口算法解决子数组乘积问题的方法。通过调整左右指针的位置来实现子数组的动态变化,进而高效地找到所有符合条件的子数组。此算法适用于寻找连续子数组满足特定条件的问题。

727

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



