0
点赞
收藏
分享

微信扫一扫

Java 反射练习

题目

解题

"""
时间复杂度:O(n),其中 n 是数组的长度。每个元素最多被访问两次(一次作为右端点,一次作为左端点)。
空间复杂度:O(1),除了输入输出,几乎没有使用额外的空间。
"""


def numSubarrayProductLessThanK(nums, k):
    if k <= 1:
        return 0

    prod = 1
    count = 0
    left = 0

    for right in range(len(nums)):
        prod *= nums[right]

        while prod >= k and left <= right:
            prod //= nums[left]
            left += 1

        count += right - left + 1

    return count


nums = [10, 5, 2, 6]
k = 100
print(numSubarrayProductLessThanK(nums, k))  # 输出: 8
举报

相关推荐

0 条评论