Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมจัดเรียงอีเมลสำคัญจากกล่องจดหมายต่างๆ ใน Python

ให้ลิสต์กล่องจดหมาย แต่ละกล่องมีลิสต์สตริง: "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']