สมมติว่าเรามีรายการรหัสอีเมลในรายการค่าคงที่ ดังนั้นในแต่ละแถวอาจมี ID อีเมลของบุคคลเดียวกันมากกว่าหนึ่งรายการ ผู้ติดต่อ i จะถือว่าซ้ำกันเมื่อมี j โดยที่ j
ดังนั้น หากอินพุตเป็นเหมือนรายชื่อติดต่อ =[["[email protected]", "[email protected]"], ["[email protected]", "[email protected]"], ["bob15@ gmail.com"] ] ผลลัพธ์จะเป็น 2 เนื่องจากผู้ติดต่อรายแรกและรายที่สองใช้รหัสอีเมลร่วมกัน จึงเป็นบุคคลเดียวกัน จึงมีสองคนที่ไม่ซ้ำกัน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ตอบ :=0
- พบ :=ชุดใหม่
- สำหรับแต่ละ c ในการติดต่อ ทำ
- ซ้ำซาก :=เท็จ
- สำหรับแต่ละอีเมลใน c ทำ
- หากไม่พบอีเมล แสดงว่า
- ทำเครื่องหมายอีเมลว่าพบแล้ว
- มิฉะนั้น
- ซ้ำซาก :=จริง
- หากไม่พบอีเมล แสดงว่า
- ถ้าการทำให้หมองคล้ำเป็นเท็จ
- อัน :=ans + 1
- คืนสินค้า
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(contacts): ans = 0 found = set() for c in contacts: dullicate = False for email in c: if email not in found: found.add(email) else: dullicate = True if not dullicate: ans += 1 return ans contacts = [ ["[email protected]", "[email protected]"], ["[email protected]", "[email protected]"], ["[email protected]"] ] print(solve(contacts))
อินพุต
[["[email protected]", "[email protected]"], ["[email protected]", "[email protected]"], ["[email protected]"] ]
ผลลัพธ์
2