题目分析:暴力方法时间超时,所以只能遍历一次
class Solution:
def numSubarrayProductLessThanK(self, nums, k):
# count = 0
# for i in range(len(nums)):
# product = 1
# for j in range(i, len(nums)):
# if product*nums[j] < k:
# count += 1
# product = product*nums[j]
# else:
# break
# return count
if k <= 1:
return 0
prod = 1
ans = left = 0
for right, val in enumerate(nums):
prod *= val
while prod >= k:
prod /= nums[left]
left += 1
ans += right - left + 1
return ans