leetcode-713 乘积小于k的数组

leetcode-713 乘积小于k的数组

参考:负雪明烛

题目描述:

给定一个正整数数组 nums。找出该数组内乘积小于 k 的连续的子数组的个数。
注:这题和209题比较类似,但是在while判断的时候需要考虑一下

class Solution(object):
    def numSubarrayProductLessThanK(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: int
        """
        res = 0
        prod = 1
        l,r = 0, 0
        N = len(nums)
        while r < N:
            prod *= nums[r]
            # 需要注意这里的条件判断,特别是prod>=k 和res的操作
            # 必须让其满足条件之后,才能进行相应的计数操作
            while l<=r and prod >= k:
                prod /= nums[l]
                l += 1
            res += r-l + 1
            r += 1
        return res
posted @ 2019-07-21 00:12  静_渊  阅读(180)  评论(0编辑  收藏  举报