友情支持
如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜
有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。
公众号的微信号是: jikerizhi 。因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。 |
713. Subarray Product Less Than K
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
.</li>
. 0 < nums[i] < 1000
.</li>
. 0 ⇐ k < 10^6
.</li>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* 参考 https://leetcode.cn/problems/subarray-product-less-than-k/solutions/1463527/cheng-ji-xiao-yu-k-de-zi-shu-zu-by-leetc-92wl/[713. 乘积小于 K 的子数组 - 官方题解^]
*
* @author D瓜哥 · https://www.diguage.com
* @since 2024-06-23 16:38:11
*/
public int numSubarrayProductLessThanK(int[] nums, int k) {
int result = 0;
int length = nums.length;
int product = 1;
int i = 0;
for (int j = 0; j < length; j++) {
product *= nums[j];
while (i <= j && product >= k) {
product /= nums[i];
i++;
}
result += j - i + 1;
}
return result;
}