ধরুন আমাদের কাছে মেইলবক্সের একটি তালিকা আছে। এখানে প্রতিটি মেলবক্সে স্ট্রিংগুলির একটি তালিকা দেওয়া হয়েছে, এখানে প্রতিটি স্ট্রিং জাঙ্কের জন্য হয় "J", ব্যক্তিগত জন্য "P", কাজের জন্য "W"। আমরা প্রথম মেলবক্স থেকে শুরু করে রাউন্ড রবিন ক্রমে প্রতিটি মেলবক্সের মধ্য দিয়ে যাব, J-কে ফিল্টার করে, একটি একক তালিকা তৈরি করতে এবং তালিকাটি ফেরত দিতে।
সুতরাং, যদি ইনপুট মেইলবক্সের মত হয় =[["W", "P"],["J", "P", "J"],["W"]], তাহলে আউটপুট হবে ["W" , "W", "P", "P"], ক্রমানুসারে এবং ফিল্টারিং ছাড়াই, আমাদের কাছে W -> J -> W -> P -> P -> J আছে, এখন যেহেতু আমরা আবর্জনা ফিল্টার করি তখন আমরা W পাই -> W -> P -> P.
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- n_mailboxes :=মেইলবক্সের আকার
- ফলাফল :=একটি নতুন তালিকা
- গণনা :=n_মেইলবক্সের আকারের একটি তালিকা, তারপর 0 দিয়ে পূরণ করুন
- আরো :=সত্য
- যদিও বেশি অ-শূন্য, কর
- আরো :=মিথ্যা
- আমি 0 থেকে n_mailবক্সের রেঞ্জের জন্য, কর
- সূচী :=গণনা[i], মেইলবক্স :=মেইলবক্স[i]
- যদি সূচক <মেলবক্সের আকার হয়, তাহলে
- আরো :=সত্য
- গণনা[i] :=গণনা[i] + 1
- মেইল :=মেইলবক্স[সূচী]
- যদি মেইলটি "J" এর মত না হয়, তাহলে
- ফলাফলের শেষে মেল ঢোকান
- ফলাফল
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, mailboxes): n_mailboxes = len(mailboxes) result = [] counts = [0]*n_mailboxes more = True while more: more = False for i in range(n_mailboxes): index, mailbox = counts[i], mailboxes[i] if index < len(mailbox): more = True counts[i] += 1 mail = mailbox[index] if mail != "J": result.append(mail) return result ob = Solution() mailboxes = [["W", "P"],["J", "P", "J"],["W"]] print(ob.solve(mailboxes))
ইনপুট
[["W", "P"],["J", "P", "J"],["W"]]
আউটপুট
['W', 'W', 'P', 'P']