Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình đếm số người duy nhất từ danh sách email liên lạc Python

Cho danh sách contacts, mỗi phần tử là danh sách email của một liên lạc. Hai liên lạc được coi là cùng một người nếu chia sẻ ít nhất một email. Đếm số người duy nhất.

Ví dụ: contacts=[["alex@gmail.com","alex@yahoo.com"],["alex_25@yahoo.com","alex@gmail.com"],["bob15@gmail.com"]] → 2 (hai liên lạc đầu trùng email alex@gmail.com).

Giải thuật (Hash set theo dõi email đã thấy)

  1. Duyệt từng liên lạc c trong contacts
  2. Kiểm tra các email trong c:
    • Nếu email chưa thấy → thêm vào set found
    • Nếu email đã thấy → đánh dấu duplicate = True
  3. Nếu không trùng lặp (duplicate == False) → tăng đếm người duy nhất

Ví dụ triển khai

def solve(contacts):
    ans = 0
    found = set()
    for c in contacts:
        duplicate = False
        for email in c:
            if email not in found:
                found.add(email)
            else:
                duplicate = True
        if not duplicate:
            ans += 1
    return ans

contacts = [
    ["alex@gmail.com", "alex@yahoo.com"],
    ["alex_25@yahoo.com", "alex@gmail.com"],
    ["bob15@gmail.com"]
]
print(solve(contacts))

Đầu vào

[["alex@gmail.com","alex@yahoo.com"],["alex_25@yahoo.com","alex@gmail.com"],["bob15@gmail.com"]]

Đầu ra

2