ধরুন আমাদের কার্ডের একটি তালিকা আছে, এবং আমরা কার্ডগুলিকে এমনভাবে অর্ডার করতে চাই যাতে সেগুলি আরোহী ক্রমে প্রকাশ পায়। আমরা জানি, কার্ডগুলি এইভাবে প্রকাশ করা হয়: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]
সরানএটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- তালিকা কার্ডগুলি সাজান
- idx:=0 থেকে কার্ডের দৈর্ঘ্যের উপাদান সহ একটি তালিকা
- order:=একটি নতুন তালিকা
- q:=একটি সারি এবং idx-এর উপাদান সন্নিবেশ করান
- যখন q অ-শূন্য, do
- q এর বাম থেকে উপাদান মুছুন এবং ক্রমানুসারে সন্নিবেশ করুন
- যদি q অ-শূন্য হয়, তাহলে
- উত্তর:=আকারের কার্ডের একটি তালিকা তৈরি করুন এবং 0 দিয়ে পূরণ করুন
- প্রতিটি উপাদানের জন্য i অর্ডার থেকে এবং কার্ড থেকে কার্ড, করুন
- উত্তর[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]