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

ตรวจสอบการเลือกตั้งซ้ำใน Python

ภาพรวม

โจทย์ตรวจสอบว่ามีผู้มีสิทธิเลือกตั้ง (voter) ที่ลงคะแนนซ้ำหรือไม่ โดยข้อมูลเป็นลิสต์ของคู่ [candidate_id, voter_id] ต้องคืน True ถ้ามี voter_id ซ้ำ

ตัวอย่าง

อินพุต: [[5, 1], [5, 0], [5, 4], [5, 3], [5, 0]]

voter_id 0 ปรากฏ 2 ครั้ง → True

วิธีแก้ (ใช้ Set)

  1. สร้าง Set ว่าง all_voters
  2. วนลูปแต่ละคะแนน เสมอเพิ่ม vote[1] (voter_id) ลง Set
  3. ถ้าจำนวนสมาชิกใน Set < จำนวนคะแนนทั้งหมด → มีซ้ำ → คืน True

โค้ด Python

class Solution:
    def solve(self, votes):
        all_voters = set()
        for vote in votes:
            all_voters.add(vote[1])
        return len(all_voters) != len(votes)

ob = Solution()
votes = [[5, 1], [5, 0], [5, 4], [5, 3], [5, 0]]
print(ob.solve(votes))

วิธีอื่น (ตรวจจับระหว่างทาง)

def has_duplicate_voter(votes):
    seen = set()
    for _, voter_id in votes:
        if voter_id in seen:
            return True
        seen.add(voter_id)
    return False

ความซับซ้อน

  • เวลา: O(N) โดย N = จำนวนคะแนน
  • พื้นที่: O(N) สำหรับ Set

ผลลัพธ์

True