मान लीजिए हमारे पास मेलबॉक्स की एक सूची है। यहां प्रत्येक मेलबॉक्स में स्ट्रिंग्स की एक सूची दी गई है, यहां प्रत्येक स्ट्रिंग या तो "J" जंक के लिए, "P" पर्सनल के लिए, "W" वर्क के लिए है। हम पहले मेलबॉक्स से शुरू करके राउंड रॉबिन क्रम में प्रत्येक मेलबॉक्स से गुजरेंगे, J को फ़िल्टर करके, एक सिंगल सूची बनाएंगे और सूची वापस करेंगे।
उदाहरण के लिए, यदि इनपुट है mailboxes = [["W", "P"],["J", "P", "J"],["W"]], तो आउटपुट होगा ["W", "W", "P", "P"], क्योंकि क्रम में और फ़िल्टरिंग के बिना, हमारे पास W -> J -> W -> P -> P -> J है, अब चूंकि हम जंक को फ़िल्टर करते हैं हमें W -> W -> P -> P मिलता है।
इसे हल करने के लिए, हम नিম्नলিখিত चरणों का पालन करेंगे:
- n_mailboxes := mailboxes का आकार
- result := एक नई सूची
- counts := आकार n_mailboxes की एक सूची, फिर 0 से भरें
- more := True
- जब तक more शून्येतर है, करें
- more := False
- i के लिए 0 से n_mailboxes तक की रेंज में, करें
- index := counts[i], mailbox := mailboxes[i]
- यदि index < mailbox का आकार, तो
- more := True
- counts[i] := counts[i] + 1
- mail := mailbox[index]
- यदि mail, "J" के समान नहीं है, तो
- mail को result के अंत में डालें
- result वापस करें
বेहतर বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখুন:
উদাহরণ
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']