|
@@ -0,0 +1,41 @@
|
|
|
+/* BEGIN */
|
|
|
+
|
|
|
+#include <vector>
|
|
|
+
|
|
|
+using std::vector;
|
|
|
+
|
|
|
+#define INF 1e6
|
|
|
+
|
|
|
+class Solution {
|
|
|
+public:
|
|
|
+ int numSubarrayProductLessThanK(vector<int>& nums, int k) {
|
|
|
+ int cnt = 0;
|
|
|
+ int l = 0, r = 0; // two pointers
|
|
|
+ int prod = 1;
|
|
|
+ while (r < nums.size()) {
|
|
|
+ prod *= nums[r];
|
|
|
+ while (prod >= k && l <= r) {
|
|
|
+ prod /= nums[l];
|
|
|
+ l++;
|
|
|
+ }
|
|
|
+ cnt += r - l + 1;
|
|
|
+ r++;
|
|
|
+ }
|
|
|
+ return cnt;
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+/* END */
|
|
|
+
|
|
|
+#include <cstdio>
|
|
|
+
|
|
|
+int main() {
|
|
|
+ Solution *sol = new Solution();
|
|
|
+ vector<int> vec = {10, 5, 2, 6};
|
|
|
+
|
|
|
+ int ans = sol->numSubarrayProductLessThanK(vec, 100);
|
|
|
+ printf("%d\n", ans);
|
|
|
+
|
|
|
+ delete sol;
|
|
|
+ return 0;
|
|
|
+}
|