ให้ลิสต์กล่องจดหมาย แต่ละกล่องมีลิสต์สตริง: "J"=junk, "P"=personal, "W"=work รอบวน (round-robin) ตั้งแต่กล่องแรก กรอง J ออก รวมเป็นลิสต์เดียว
ตัวอย่าง: [["W","P"],["J","P","J"],["W"]] → ["W","W","P","P"] (ลำดับ: W, J, W, P, P, J → กรอง J)
อัลกอริธึม Round Robin
- เก็บ index ปัจจุบันของแต่ละกล่อง
- ลูปจนกว่าทุกกล่องหมด: เดินกล่องทีละอัน ถ้ายังมีจดหมาย → นำออก ถ้าไม่ใช่ J → เพิ่มในผลลัพธ์
การนำไปใช้
class Solution:
def solve(self, mailboxes):
n = len(mailboxes)
result = []
counts = [0] * n
more = True
while more:
more = False
for i in range(n):
idx = counts[i]
if idx < len(mailboxes[i]):
more = True
counts[i] += 1
mail = mailboxes[i][idx]
if mail != "J":
result.append(mail)
return result
ob = Solution()
print(ob.solve([["W","P"],["J","P","J"],["W"]])) # ['W','W','P','P']