কম্পিউটার

C++-এ বৈধ সাবারের সংখ্যা


ধরুন আমাদের কাছে পূর্ণসংখ্যার একটি অ্যারে রয়েছে, আমাদের এই শর্তটি পূরণ করে এমন অ-খালি অবিচ্ছিন্ন সাবয়ারের সংখ্যা খুঁজে বের করতে হবে:সাবয়েরের বাম দিকের উপাদানটি সাবয়ারের অন্যান্য উপাদানগুলির চেয়ে বড় নয়৷

সুতরাং, যদি ইনপুটটি [1,4,2,5,3] এর মত হয়, তাহলে আউটপুট হবে 11, যেহেতু 11টি বৈধ সাবয়ারে আছে, সেগুলি হল [1],[4],[2],[5] ],[3],[1,4],[2,5],[1,4,2],[2,5,3],[1,4,2,5],[1,4,2 ,5,3]।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • ret :=0

  • n :=সংখ্যার আকার

  • একটি স্ট্যাক স্ট্যাক সংজ্ঞায়িত করুন

  • আরম্ভ করার জন্য i :=0, যখন i <সংখ্যার আকার, আপডেট (i 1 দ্বারা বৃদ্ধি), −

    • x :=সংখ্যা[i]

    • যখন (st খালি নয় এবং x করুন

      • st

        থেকে উপাদান মুছুন
    • st

      -এ x ঢোকান
    • ret :=st + ret

      এর আকার
  • রিটার্ন রিটার্ন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int validSubarrays(vector<int>& nums) {
      int ret = 0;
      int n = nums.size();
      stack <int> st;
      for(int i = 0; i < nums.size(); i++){
         int x = nums[i];
         while(!st.empty() && x < st.top()) st.pop();
         st.push(x);
         ret += st.size();
      }
      return ret;
   }
};
main(){
   Solution ob;
   vector<int> v = {1,4,2,5,3};
   cout << (ob.validSubarrays(v));
}

ইনপুট

{1,4,2,5,3}

আউটপুট

11

  1. C++ এ মিতব্যয়ী নম্বর

  2. C++ পেন্টাটোপ নম্বর

  3. C++ এ বৈধ সুডোকু

  4. C++ এ অ্যাডাম নম্বর