একটি ধনাত্মক পূর্ণসংখ্যা অ্যারে A আর দুটি ধনাত্মক পূর্ণসংখ্যা L আর R দেওয়া আছে। এমন সাবঅ্যারে (সন্নিবিষ্ট, নন-এম্পটি) কতগুলো আছে যাতে সাবঅ্যারেটির সর্বোচ্চ উপাদান কমপক্ষে L আর hoogst R হয়। উদাহরণ: A = [2,1,4,3], L = 2, R = 3 হলে আউটপুট ৩, কারণ তিনটি সাবঅ্যারে শর্ত পূরণ করে: [2], [2,1], [3]।
সমাধানের ধাপগুলো:
ret := 0, dp := 0, prev := -1i = 0থেকেA.size()-1পর্যন্ত:- যদি
A[i] < Lএবংi > 0,ret := ret + dp - যদি
A[i] > R,prev := i, dp := 0 - অন্যथा যদি
A[i] >= L AND A[i] <= R,dp := i - prev, ret := ret + dp
- যদি
retফেরত দিন।
উদাহরণ (C++)
#include <bits/stdc++.h> using namespace std; class Solution { public: int numSubarrayBoundedMax(vector<int>& A, int L, int R) { int ret = 0; int dp = 0; int prev = -1; for(int i = 0; i < A.size(); i++){ if(A[i] < L && i > 0){ ret += dp; } if(A[i] > R){ prev = i; dp = 0; } else if(A[i] >= L && A[i] <= R){ dp = i - prev; ret += dp; } } return ret; } }; main(){ vector<int> v = {2,1,4,3}; Solution ob; cout << (ob.numSubarrayBoundedMax(v, 2, 3)); }ইনপুট
[2,1,4,3] 2 3
আউটপুট
3