Skip to content

Latest commit

 

History

History
89 lines (49 loc) · 1.49 KB

File metadata and controls

89 lines (49 loc) · 1.49 KB

中文文档

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 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.

Note:

  • 0 < nums.length <= 50000.
  • 0 < nums[i] < 1000.
  • 0 <= k < 10^6.
  • Solutions

    C++

    class Solution {
    public:
        int numSubarrayProductLessThanK(vector<int>& nums, int k) {
            int left = 0, right;
            long mul = 1;
            int count = 0;
    
            for (right = 0; right < nums.size(); right++) {
                mul *= nums[right];
    
                while(left <= right && mul >= k) {
                    mul /= nums[left++];
                }
    
                count += right >= left? right - left + 1: 0;
            }
    
            return count;
        }
    };

    Python3

    Java

    ...