Java 反射练习

阅读 24

2024-08-21

题目

解题

"""
时间复杂度: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)

0 0 举报