假设我们有一个邮箱列表。在每个邮箱中,这里都有一个字符串列表,在这里,每个字符串都是“ 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:=邮箱大小
结果:=一个新列表
counts:=大小为n_mailboxes的列表,然后填充0
更多:=正确
虽然更多非零
索引:=计数[i],邮箱:=邮箱[i]
如果索引<邮箱大小,则
在结果末尾插入邮件
更多:=正确
counts [i]:= counts [i] + 1
邮件:=邮箱[索引]
如果邮件与“ J”不同,则
更多:=错误
对于范围在0到n_mailboxes中的我,执行
返回结果
让我们看下面的实现以更好地理解-
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']