বিল্ট-ইন set ক্লাস ব্যবহার না করে একটি সেট ডেটা স্ট্রাকচার ইমপ্লিমেন্ট করুন যাতে মেথড থাকে: add(val), exists(val), remove(val)।
ইনপুট উদাহরণ
s = MySet()
s.add(10); s.add(20); s.add(10)
s.exists(10) # True
s.remove(10)
s.exists(10) # False
s.exists(20) # True
অ্যালগরিদম
হ্যাশ টেবিল (ডিকশনারি) ব্যবহার করে: buckets[key] = [values]। এখানে কollision হ্যান্ডলিং ছাড়া সিম্পল ইমপ্লিমেন্টেশন (কারণ কি নিজেই হ্যাশ)।
পাইথন কোড
from collections import defaultdict
class MySet:
def __init__(self):
self.buckets = defaultdict(list)
def add(self, val):
if not self.exists(val):
self.buckets[val].append(val)
def exists(self, val):
return val in self.buckets[val]
def remove(self, val):
del self.buckets[val]
# টেস্ট
s = MySet()
s.add(10); s.add(20); s.add(10)
print(s.exists(10)) # True
s.remove(10)
print(s.exists(10)) # False
print(s.exists(20)) # True
ব্যাখ্যা
defaultdict(list) ব্যবহার করা হয়েছে। exists এ val in self.buckets[val] চেক করে (লিস্টে সার্চ, O(1) এভারেজ)। বাস্তবে হ্যাশ ফাংশন এবং কলিশন রেজোলিউশন (চেইনিং/ওপেন অ্যাড্রেসিং) ইমপ্লিমেন্ট করতে হয়।