713. Subarray Product Less Than K——array

题目分析:暴力方法时间超时,所以只能遍历一次

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

相关文章: