কম্পিউটার টিউটোরিয়াল

C++-এ বাউন্ডেড সর্বোচ্চ মান সহ সাবঅ্যারে গণনা


একটি ধনাত্মক পূর্ণসংখ্যা অ্যারে A আর দুটি ধনাত্মক পূর্ণসংখ্যা L আর R দেওয়া আছে। এমন সাবঅ্যারে (সন্নিবিষ্ট, নন-এম্পটি) কতগুলো আছে যাতে সাবঅ্যারেটির সর্বোচ্চ উপাদান কমপক্ষে L আর hoogst R হয়। উদাহরণ: A = [2,1,4,3], L = 2, R = 3 হলে আউটপুট ৩, কারণ তিনটি সাবঅ্যারে শর্ত পূরণ করে: [2], [2,1], [3]।

সমাধানের ধাপগুলো:

  • ret := 0, dp := 0, prev := -1
  • i = 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

  1. সি++-এ ছাত্র উপস্থিতি রেকর্ড II (Student Attendance Record II)

  2. C++-এ সর্বোচ্চ সংখ্যা তৈরি করা (Create Maximum Number)

  3. C++-এ ১ থেকে n পর্যন্ত ডিজিট ১-এর সংখ্যা গণনা (Number of Digit One)

  4. C++-এ K-সংযোগ সর্বোচ্চ উপ-অ্যারে যোগফল