কম্পিউটার

C++-এ অ্যারের দীর্ঘতম পর্বত


নিচের বৈশিষ্ট্যগুলি থাকলে −

ধারণ করলে যেকোনও (সংলগ্ন) সাবয়ারে B (A) একটি পর্বত বলা হয়।
  • B এর আকার>=3
  • কিছু ​​0 B[i+1]>। ..> B[B.দৈর্ঘ্য - 1]

ধরুন আমাদের পূর্ণসংখ্যার একটি অ্যারে আছে; আমাদের দীর্ঘতম পর্বতের দৈর্ঘ্য খুঁজে বের করতে হবে। পাহাড় না থাকলে আমাদের 0 ফিরতে হবে। সুতরাং যদি ইনপুটটি [2,1,4,7,3,2,5] এর মত হয়, তবে ফলাফল 5 হবে। সুতরাং বৃহত্তম পর্বত হবে [1,4,7,3,2], যার দৈর্ঘ্য ৫.

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

  • ret :=0, n :=অ্যারের আকার
  • i :=0 থেকে n – 1, i বাড়িয়ে j + 1
    • j :=i
    • নিচে :=মিথ্যা, উপরে :=মিথ্যা
    • যখন j + 1 a[j]
      • up :=true এবং j 1 দ্বারা বাড়ান
    • যখন পর্যন্ত সত্য এবং j + 1 a[j]
      • down :=true এবং j 1 দ্বারা বাড়ান
    • উপর এবং নিচে উভয়ই সত্য হলে, ret :=সর্বোচ্চ j – i + 1 এবং ret, j কমিয়ে 1 সেট করুন
  • রিটার্ন রিটার্ন।

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int longestMountain(vector<int>& a) {
      int ret = 0;
      int n = a.size();
      int j;
      for(int i = 0; i < n; i = j + 1){
         j = i;
         bool down = false;
         bool up = false;
         while(j + 1 < n && a[j + 1] > a[j]) {
            up = true;
            j++;
         }
         while(up && j + 1 < n && a[j + 1] < a[j]){
            down = true;
            j++;
         }
         if(up && down){
            ret = max(j - i + 1, ret);
            j--;
         }
      }
      return ret;
   }
};
main(){
   vector<int> v = {2,1,4,7,3,2,5};
   Solution ob;
   cout << (ob.longestMountain(v));
}

ইনপুট

[2,1,4,7,3,2,5]

আউটপুট

5

  1. C++ এ দীর্ঘতম পুনরাবৃত্তি সাবস্ট্রিং

  2. C++ এ দীর্ঘতম অশান্ত সাবারে

  3. C++ স্ট্রিং এর অ্যারে

  4. C++ এ সাজানো হচ্ছে