---
# System prepended metadata

title: 713. Subarray Product Less Than K

---

# 713. Subarray Product Less Than K

https://leetcode.com/problems/subarray-product-less-than-k/

###### Medium

##### Description
> Your are given an array of positive integers nums.
> 
> Count and print the number of (contiguous) subarrays where the product of all the elements in the subarray is less than k.
> 
##### Example
> 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.

##### Solution
```python=
class Solution:
    def numSubarrayProductLessThanK(self, nums: List[int], k: int) -> int:

      if k<= 1:
        return 0
        
      count = 0
      start = 0
      end = 0
      sum = 1

      while end < len(nums):

        v = nums[end]
        sum *= v

        while sum >= k:
          sum /= nums[start]
          start += 1

        count += end - start + 1
        end += 1
      
      return count
```

##### Tips
* Two Pointer
* Sliding Window

##### Note
以原題目[10,5,2,6]解釋
當[5,2,6]成立時,包含的[5,2,6],[2,6],[6]皆成立
**end-start+1**就是所有集合的數量

