मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। इस सरणी के कुछ तत्व A[i] को स्थानीय न्यूनतम कहा जाता है यदि और केवल अगर यह अपने दोनों पड़ोसियों से सख्ती से कम है। इसके अलावा अगर यह अपने पड़ोसियों से सख्ती से बड़ा है तो यह स्थानीय अधिकतम होगा। ए [0] और ए [एन -1] के लिए केवल एक पड़ोसी होने के कारण वे मैक्सिमा या मिनिमा नहीं हैं। हमें दिए गए ऐरे में स्थानीय एक्स्ट्रेमा की संख्या ज्ञात करनी है।
इसलिए, यदि इनपुट ए =[1, 5, 2, 5] जैसा है, तो आउटपुट 2 होगा, क्योंकि ए [1] पर 5 स्थानीय मैक्सिमा है और ए [2] पर 2 स्थानीय मिनीमा है।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
sum := 0 n := size of A for initialize i := 1, when i < n - 1, update (increase i by 1), do: if (A[i] < A[i - 1] and A[i] < A[i + 1]) or (A[i] > A[i + 1] and A[i] > A[i - 1]), then: (increase sum by 1) return sum
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A){ int sum = 0; int n = A.size(); for (int i = 1; i < n - 1; i++) if ((A[i] < A[i - 1] && A[i] < A[i + 1]) || (A[i] > A[i + 1] && A[i] > A[i - 1])) sum++; return sum; } int main(){ vector<int> A = { 1, 5, 2, 5 }; cout << solve(A) << endl; }
इनपुट
{ 1, 5, 2, 5 }
आउटपुट
2