কন্ট্যাক্ট লিস্টে প্রতিটি রো একাধিক মেইল থাকতে পারে। যদি দুটি কন্ট্যাক্ট কমন মেইল শেয়ার করে, তবে সে একই ব্যক্তি। ইউনিক ব্যক্তির সংখ্যা বের করুন।
ইনপুট উদাহরণ
contacts = [
["alex@gmail.com", "alex@yahoo.com"],
["alex_25@yahoo.com", "alex@gmail.com"],
["bob15@gmail.com"]
]
আউটপুট: 2 (প্রথম দুটি একই ব্যক্তি, তৃতীয় আলাদা)
অ্যালগরিদম
foundসেটে দেখা মেইল রাখুন।- প্রতিটি কন্ট্যাক্টের মেইল চেক করুন: যদি কোনো মেইল আগে দেখা থাকে, তবে ডুপ্লিকেট।
- ডুপ্লিকেট না হলে ইউনিক কাউন্ট বাড়ান।
পাইথন কোড
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)) # 2
ব্যাখ্যা
এই সমাধান আংশিকভাবে কাজ করে (শুধু পिछোর কন্ট্যাক্টের সাথে কমন মেইল চেক করে)। পূর্ণ সমাধানের জন্য Union-Find (DSU) ব্যবহার করতে হয় যাতে ট্রানজিটিভ কানেকশন হ্যান্ডেল হয়।