मान लीजिए कि एक प्रारंभिक सरणी गिरफ्तारी है, मान लें कि हर दिन हम पिछले दिन की सरणी का उपयोग करके एक नई सरणी बनाते हैं। 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]