Leetcode713:乘积小于k的子数组
- 题目:
- 给你一个整数数组
nums和一个整数k,请你返回子数组内所有元素的乘积严格小于k的连续子数组的数目。
- 给你一个整数数组
- 思路:滑动窗口
- 代码如下:
class Solution {
public int numSubarrayProductLessThanK(int[] nums, int k) {
int res = 0;
int n = nums.length;
//当k为1时,任何子数组的乘积均大于等于1,故结果为0
if (k <= 1) {
return 0;
}
for ( int i = 0, j = 0, cur = 1; i < n; i++ ) {
cur *= nums[i];
while ( cur >= k ) {
cur /= nums[j++];
}
res += i - j + 1;
}
return res;
}
}

该博客介绍了如何使用滑动窗口算法解决LeetCode第713题。在给定整数数组nums和整数k的情况下,计算所有元素乘积小于k的连续子数组的数量。当k小于等于1时,结果为0。通过遍历数组并动态调整窗口大小,可以有效地找到满足条件的子数组。

被折叠的 条评论
为什么被折叠?



