मान लीजिए हमारे पास कार्डों की एक सूची है, और हम कार्डों को इस तरह से ऑर्डर करना चाहते हैं कि वे आरोही क्रम में प्रकट हों। जैसा कि हम जानते हैं, कार्ड इस तरह से प्रकट होते हैं:1. सबसे ऊपर वाले कार्ड को हटा दिया जाता है और प्रकट किया जाता है और फिर अगला कार्ड पीछे चला जाता है। 2. चरण 1 तब तक दोहराया जाता है जब तक कि कोई और कार्ड न हो। हमें कार्डों का एक क्रम खोजना होगा ताकि वे आरोही क्रम में प्रकट हों।
इसलिए, यदि इनपुट कार्ड की तरह है =[1, 2, 3, 4, 5, 6, 7, 8], तो आउटपुट [1, 5, 2, 7, 3, 6, 4, 8] होगा। जैसा कि 1 को हटा दिया जाता है और 5 को पीछे की ओर ले जाया जाता है, वर्तमान स्थिति [2, 7, 3, 6, 4, 8, 5]। 2 को हटा दिया जाता है और 7 को पीछे की ओर ले जाया जाता है, वर्तमान स्थिति [3, 6, 4, 8, 5, 7] 3 को हटा दिया जाता है और 6 को पीछे की ओर ले जाया जाता है, वर्तमान स्थिति [4, 8, 5, 7, 6] 4 को हटा दिया जाता है और 8 को पीछे की ओर ले जाया जाता है, वर्तमान स्थिति [5, 7, 6, 8] 5 को हटा दिया जाता है और 7 को पीछे की ओर ले जाया जाता है, वर्तमान स्थिति [6, 8, 7]। 6 को हटा दिया जाता है और 8 को पीछे की ओर ले जाया जाता है, वर्तमान स्थिति [7, 8]। 7 हटा दिया गया है और केवल एक कार्ड है [8]। फिर [8]
remove को हटा देंइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- सूची कार्ड क्रमबद्ध करें
- idx:=0 से लेकर कार्ड की लंबाई तक के तत्वों वाली एक सूची
- आदेश:=एक नई सूची
- q:=एक कतार और idx के तत्व सम्मिलित करें
- जबकि q गैर-शून्य है, करें
- q के बाईं ओर से तत्व हटाएं और क्रम में डालें
- यदि q शून्य नहीं है, तो
- उत्तर:=आकार कार्डों की एक सूची बनाएं, और 0 से भरें
- प्रत्येक तत्व के लिए मैं आदेश से और कार्ड से कार्ड, करते हैं
- उत्तर[i]:=कार्ड
- वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
from collections import deque class Solution: def solve(self, cards): cards.sort() idx=[i for i in range(len(cards))] order=[] q=deque(idx) while q: order.append(q.popleft()) if q: q.append(q.popleft()) ans=[0 for _ in cards] for i,card in zip(order,cards): ans[i]=card return ans ob = Solution() print(ob.solve([1, 2, 3, 4, 5, 6, 7, 8]))
इनपुट
[1, 2, 3, 4, 5, 6, 7, 8]
आउटपुट
[1, 5, 2, 7, 3, 6, 4, 8]