public int numSubarrayProductLessThanK(int[] nums, int k) {
int n = nums.length, ans = 0;
if (k <= 1) return 0;
//i每次都向右移动一位,只要cur>=k,j就向右移动,每次都会得到以i结束的最大连续子数组
//那么以[j,i]内某个数为开始的数组都满足条件
for (int i = 0, j = 0, cur = 1; i < n; i++) {
cur *= nums[i];
while (cur >= k) cur /= nums[j++];
ans += i - j + 1;
}
return ans;
}
滑动窗口算法leetcode.713
最新推荐文章于 2024-07-22 16:27:42 发布