मान लीजिए हमारे पास मेलबॉक्स की एक सूची है। यहां प्रत्येक मेलबॉक्स में स्ट्रिंग्स की एक सूची दी गई है, यहां प्रत्येक स्ट्रिंग या तो "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 := Falseiको 0 सेn_mailboxesतक:index := counts[i],mailbox := mailboxes[i]- यदि
index < mailboxका आकार, तो:more := Truecounts[i] := counts[i] + 1mail := 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']