কোনো (সন্নিহিত) সাবঅ্যারে B (অ্যারে A-এর) একটি মাউন্টেন বলা হবে যদি নিচের শর্তগুলো পূরণ হয় −
B-র আকার >= 3- কোনো
0 < i < B.length - 1থাকে যাতেB[0] < B[1] < ... B[i-1] < B[i] > B[i+1] > ... > B[B.length - 1]
মান করুন আমাদের একটি পূর্ণসংখ্যা অ্যারে A দেওয়া আছে; আমাদের সবচেয়ে লম্বা মাউন্টেনের দৈর্ঘ্য খুঁজে বের করতে হবে। মাউন্টেন না থাকলে 0 ফেরত দিতে হবে। যদি ইনপুট হয় [2,1,4,7,3,2,5], তবে ফলাফল হবে 5। সবচেয়ে বড় মাউন্টেন হবে [1,4,7,3,2], যার দৈর্ঘ্য 5।
এটি সমাধান করার জন্য নিচের ধাপগুলি অনুসরণ করুন −
ret := 0,n := aঅ্যারের আকারi := 0থেকেn - 1,iকেj + 1দিয়ে বৃদ্ধি করুনj := idown := false,up := falsewhile j + 1 < n && a[j + 1] > a[j]up := trueএবংj1 বৃদ্ধি করুন
while up && j + 1 < n && a[j + 1] < a[j]down := trueএবংj1 বৃদ্ধি করুন
- যদি
upএবংdownউভয়ই true হয়,ret := max(j - i + 1, ret)সেট করুন,j1 কমান
retফেরত দিন
উদাহরণ কোড
#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