নিচের বৈশিষ্ট্যগুলি থাকলে −
ধারণ করলে যেকোনও (সংলগ্ন) সাবয়ারে 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