मान लीजिए कि N के कुछ निश्चित मान के लिए, एक सरणी A सुंदर है, जब यह पूर्णांक 1, 2, ..., N का क्रमचय हो, जैसे कि -
-
प्रत्येक i
मान लीजिए हमारे पास N है, हमें कोई सुंदर सरणी A ढूंढनी है।
तो अगर इनपुट 5 जैसा है, तो आउटपुट [3,1,2,5,4]
. होगाइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
रिट नामक एक सरणी बनाएं, रिट में 1 डालें
-
जबकि रिट का आकार <एन
-
एक सरणी अस्थायी बनाएं
-
मैं के लिए 0 से रिट के आकार की सीमा में - 1
-
अगर ret[i] * 2 - 1 <=N, तो ret[i] * 2 - 1 को अस्थायी सरणी में डालें
-
-
मैं के लिए 0 से रिट के आकार की सीमा में - 1
-
अगर ret[i] * 2 <=N, फिर ret[i] * 2 को अस्थायी सरणी में डालें
-
रिट सेट करें:=अस्थायी
-
-
वापसी रिट
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; 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> beautifulArray(int N) { vector <int> ret; ret.push_back(1); while(ret.size() < N){ vector <int> temp; for(int i = 0; i < ret.size(); i++){ if(ret[i] * 2 - 1 <= N) temp.push_back(ret[i] * 2 - 1); } for(int i = 0; i < ret.size(); i++){ if(ret[i] * 2 <= N)temp.push_back(ret[i] * 2 ); } ret = temp; } return ret; } }; main(){ Solution ob; print_vector(ob.beautifulArray(6)); }
इनपुट
5
आउटपुट
[1,5,3,2,4]