#713
Medium Algorithms Subarray product less than k
Array Binary Search Sliding Window Prefix Sum
53.9% acceptance
Feb 21, 2026
7483
235
Given an array of integers nums and an integer k, return the number of contiguous subarrays where the product of all the elements in the subarray is strictly less than k.
Solution
Rust
Time O(n²)
Space O(1)
/*
* Given an array of integers nums and an integer k, return the number of contiguous subarrays where the product of all the elements in the subarray is strictly 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.
* Example 2:
* Input: nums = [1,2,3], k = 0
* Output: 0
* Constraints:
* 1 <= nums.length <= 3 * 104
* 1 <= nums[i] <= 1000
* 0 <= k <= 106
*/
impl Solution {
pub fn num_subarray_product_less_than_k(nums: Vec<i32>, k: i32) -> i32 {
if k <= 1 { return 0; }
let mut count = 0i32;
let mut product = 1i64;
let mut left = 0usize;
for right in 0..nums.len() {
product *= nums[right] as i64;
while product >= k as i64 && left <= right {
product /= nums[left] as i64;
left += 1;
}
count += (right + 1).saturating_sub(left) as i32;
}
count
}
}