मान लीजिए हमारे पास ताश के पत्तों का एक डेक है; प्रत्येक कार्ड में एक अद्वितीय संख्या होती है। हम डेक को किसी भी क्रम में ऑर्डर कर सकते हैं जो हम चाहते हैं। तो प्रारंभ में, सभी कार्ड एक डेक में नीचे की ओर (अप्रकाशित) शुरू होते हैं। अब, हम निम्न चरणों को कई बार करते हैं, जब तक कि सभी कार्ड प्रकट नहीं हो जाते -
-
मान लीजिए हमारे पास ताश के पत्तों का एक डेक है; प्रत्येक कार्ड में एक अद्वितीय संख्या होती है। हम डेक को किसी भी क्रम में ऑर्डर कर सकते हैं जो हम चाहते हैं। तो प्रारंभ में, सभी कार्ड एक डेक में नीचे की ओर (अप्रकाशित) शुरू होते हैं। अब, हम निम्न चरणों को कई बार करते हैं, जब तक कि सभी कार्ड प्रकट नहीं हो जाते -
-
अगर डेक में अभी भी कार्ड हैं, तो डेक के अगले शीर्ष कार्ड को डेक के नीचे रखें।
-
यदि अभी भी अनदेखे कार्ड हैं, तो चरण 1 पर वापस जाएं। अन्यथा, प्रक्रिया को रोक दें।
इसलिए हमें डेक का एक क्रम वापस करना होगा जो कार्डों को बढ़ते क्रम में प्रकट करेगा।
अब उत्तर में पहली प्रविष्टि को डेक का शीर्ष माना जाता है।
तो अगर इनपुट [17,13,11,2,3,5,7] जैसा है, तो आउटपुट [2,13,3,11,5,17,7] होगा, मान लीजिए कि हमने इसे फिर से व्यवस्थित किया है [2,13,3,11,5,17,7], अब 2 शीर्ष पर है, 2 देखने के बाद 13 को अंतिम पर ले जाएं, तो डेक जैसा होगा [3,11,5,17,7,13 ], फिर 3 हटाएँ, और चरण फिर से करें। तो डेक [5,17,7,13,11] होगा, उसके बाद 5 को हटा दें, फिर ऊपर से नीचे जाने के बाद, सरणी [7,13,11,17] होगी, फिर ऐसा ही करते हुए, डेक संरचनाएं [11,17,13], [13.17], [17] होंगी, फिर 17 हटाएं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
पहले डेक को सॉर्ट करें, n :=डेक का आकार सेट करें
-
एक कतार q, और एक सरणी परिभाषित करें जिसे n आकार का उत्तर कहा जाता है
-
q में लगातार i तत्व डालें, जहां i 0 से n - 1 तक है
-
मेरे लिए 0 से n - 1 की सीमा में
-
x :=q का अगला तत्व, फिर कतार से हटाएं
-
ans[x] :=डेक[i]
-
x :=q का अगला तत्व और कतार से हटाएं
-
q में x डालें
-
-
वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; void print_vector(vector<int> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Solution { public: vector<int> deckRevealedIncreasing(vector& deck) { sort(deck.begin(), deck.end()); int n = deck.size(); queue <int> q; vector <int> ans(n); for(int i = 0; i < n; i++)q.push(i); int x; for(int i = 0; i < n; i++){ x = q.front(); q.pop(); ans[x] = deck[i]; x = q.front(); q.pop(); q.push(x); } return ans; } }; main(){ vector<int> v1 = {17,13,11,2,3,5,7}; Solution ob; print_vector(ob.deckRevealedIncreasing(v1)); }
इनपुट
[17,13,11,2,3,5,7]
आउटपुट
[2,13,3,11,5,17,7]