题目
给出一个正整数数组,找出子序列,满足子序列的乘积小于指定值。输出符合要求的子序列的个数。如:
Example 1:
Input: nums = [10, 5, 2, 6], k = 100
Output: 8
Explanation: The 8 subarrays that have product less than 100 are: [10], [5], [2], [6], [10, 5], [5, 2], [2, 6], [5, 2, 6].
Note that [10, 5, 2] is not included as the product of 100 is not strictly less than k.
Python题解
class Solution(object):
def numSubarrayProductLessThanK(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: int
"""
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
本文探讨了如何找出正整数数组中所有子序列,这些子序列的乘积要小于给定值,并给出了详细的Python实现代码。通过动态更新乘积和左右指针的方式,有效地解决了该问题。
533

被折叠的 条评论
为什么被折叠?



