链接: https://leetcode.cn/problems/subarray-product-less-than-k/
题意
给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目。
解法
维护一个窗口[l,r],并记录该窗口内数组的乘积cur的值
如果该窗口内的数组的乘积为cur小于k,先记录以nums[r]结尾的子数组个数,窗口向右扩大r++,并且cur乘nums[r];
每次加上以r作为结尾的连续子数组的个数r-l+1
如果窗口内的数组乘积cur大于k,窗口向左缩小,先除去nums[l]的值,然后再让l++;
代码
1 | class Solution { |