乘积小于k的子数组
使用双指针的方法:
class Solution {
public:
int numSubarrayProductLessThanK(vector<int>& nums, int k) {
//使用双指针的方法,又连续的字样就想到双指针或者是动态规划的算法
//使用回溯法应该也可以试一下,总体来说还是需要进行滑动窗口的控制
int len=nums.size();
if(k<=1)
return 0;
int left=0;
int sum=1;
int result=0;
for(int i=0;i<len;++i)
{
sum=sum*nums[i];
while(sum>=k)//如果当前的乘积大于k,那么就需要将left向前移动
{
sum=sum/nums[left];
++left;
}
result=result+i-left+1;
}
return result;
}
};