मान लीजिए कि 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]