1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| class Solution { public: int numSubarrayProductLessThanK(vector<int>& nums, int k) { int n=nums.size(); int l=0,r=0; int s=nums[0]; long long res=0; while(l<=r&&r!=n-1){ while(s<k){ res+=r-l+1; if(r!=n-1){ r++; s*=nums[r]; }else{ break; } } if(s>=k){ while(s>=k){ if(l<n){ s/=nums[l++]; if(s==1&&l<n){ r=l; s=nums[r]; } }else{ break; } } if(r==n-1&&s<k) res+=r-l+1; } } return res; } };
|