leetcode每日一题—713.乘积小于k的子数组

题目:
给定一个正整数数组 nums。找出该数组内乘积小于 k 的连续的子数组的个数。
leetcode每日一题—713.乘积小于k的子数组_第1张图片
思路:
滑动窗口,思想类似于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

你可能感兴趣的:(leetcode,Python)