713. 乘积小于K的子数组
问题713 乘积小于K的子数组 ★★☆☆☆
https://leetcode-cn.com/problems/subarray-product-less-than-k/
这个题目其实和问题209很像,利用滑动窗口来解答的思路都是,先向右扩展右指针,直到左右指针窗口内的元素不再满足某个要求,开始向右扩展左指针,在这个过程中,维护一个目标计算结果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public int numSubarrayProductLessThanK(int[] nums, int k) {
if (k <= 1) {
return 0;
}
int cnt = 0;
int left = 0, right = 0, product = 1;
while (right < nums.length) {
product *= nums[right];
while (product >= k) {
product /= nums[left];
left++;
}
cnt += right - left + 1;
right++;
}
return cnt;
}
本文由作者按照 CC BY 4.0 进行授权