मान लीजिए कि एक प्रारंभिक सरणी गिरफ्तारी है, मान लें कि हर दिन हम पिछले दिन की सरणी का उपयोग करके एक नई सरणी बनाते हैं। i-वें दिन, हम दिन i की सरणी बनाने के लिए दिन i-1 की सरणी पर निम्नलिखित कार्य करेंगे I शर्तें इस प्रकार हैं -
-
यदि कोई तत्व उसके बाएँ और दाएँ आसन्न मानों से छोटा है, तो यह तत्व बढ़ा हुआ है।
-
यदि कोई तत्व उसके बाएँ और दाएँ आसन्न मानों से बड़ा है, तो यह तत्व घटा हुआ है।
-
पहला और आखिरी तत्व वही रहेगा।
कुछ दिनों के बाद, सरणी अब और नहीं बदलती है। उस अंतिम सरणी को खोजें। तो यदि प्रारंभिक सरणी [6,2,3,4] है तो आउटपुट [6,3,3,4] है। पहले दिन, ऐरे को [6,2,3,4] से [6,3,3,4] में बदल दिया जाएगा, फिर कोई और ऑपरेशन नहीं किया जाएगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- यदि सरणी का आकार 2 या 2 से कम है, तो सरणी लौटाएं
- झंडा सेट करें:=सच
- जबकि झंडा सही है -
- झंडा सेट करें:=झूठा
- अस्थायी नामक एक खाली सरणी बनाएं, और arr[0] को अस्थायी में डालें
- i श्रेणी 1 से सरणी आकार के लिए - 1
- अगर arr[i]
- अन्यथा जब arr[i]> arr[i - 1] और arr[i]> arr[i + 1], तब arr[i] - 1 को टेम्परेचर में डालें, और फ्लैग सेट करें:=true
- अन्यथा गिरफ्तारी [i] अस्थायी में डालें
- अगर arr[i]
- गिरफ्तारी का अंतिम तत्व अस्थायी में डालें
- गिरफ्तारी:=अस्थायी
- रिटर्न अरेस्ट
उदाहरण(C++)
एक बेहतर समझ प्राप्त करने के लिए आइए निम्नलिखित कार्यान्वयन को देखें -
#include <bits/stdc++.h>
using namespace std;
#define push push_back
void print_vector(vector<auto> v){
cout << "[";
for(int i = 0; i<v.size(); i++){
cout << v[i] << ", ";
}
cout << "]"<<endl;
}
class Solution {
public:
vector<int> transformArray(vector<int>& arr) {
if(arr.size()<=2)return arr;
bool flag = true;
while(flag){
flag = false;
vector <int> temp;
temp.push_back(arr[0]);
for(int i = 1; i < arr.size()-1; i++){
if(arr[i]< arr[i-1] && arr[i]<arr[i+1]){
temp.push(arr[i]+1);
flag = true;
}
else if(arr[i]> arr[i-1] && arr[i]>arr[i+1]){
flag = true;
temp.push(arr[i]-1);
}
else temp.push(arr[i]);
}
temp.push_back(arr[arr.size()-1]);
arr = temp;
}
return arr;
}
};
main(){
Solution ob;
vector<int> v = {1,6,3,4,3,5};
print_vector(ob.transformArray(v));
} इनपुट
[1,6,3,4,3,5]
आउटपुट
[1,4,4,4,4,5]