สมมติว่าเรามีรายการอีเมลในรายการ contacts แต่ละแถวอาจมีอีเมลมากกว่าหนึ่งของคนเดียวกัน ติดต่อ i ถือว่าซ้ำเมื่อมี j ที่ j < i และติดต่อ j แบ่งปันอีเมลร่วมกับ i เราต้องหาจำนวนคนที่ไม่ซ้ำกันใน contacts
เช่น ถ้าอินพุตคือ contacts = [["alex@gmail.com", "alex@yahoo.com"], ["alex_25@yahoo.com", "alex@gmail.com"], ["bob15@gmail.com"]] ผลลัพธ์จะเป็น 2 เพราะติดต่อ 1 และ 2 แบ่งปันอีเมลเดียวกัน จึงเป็นคนเดียวกัน มีคนไม่ซ้ำ 2 คน
ขั้นตอนการแก้ปัญหา
ans := 0,found := เซตใหม่- สำหรับแต่ละ
cในcontacts:duplicate := False- สำหรับแต่ละ
emailในc:- ถ้า
emailไม่อยู่ในfoundทำเครื่องหมายว่าเจอแล้ว - มิฉะนั้น
duplicate := True
- ถ้า
- ถ้า
duplicate == Falseให้ans += 1
- คืนค่า
ans
ตัวอย่างการใช้งาน
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))
อินพุต
[["alex@gmail.com", "alex@yahoo.com"], ["alex_25@yahoo.com", "alex@gmail.com"], ["bob15@gmail.com"]]
เอาต์พุต
2