ধরুন আমরা নিম্নলিখিত পদ্ধতিগুলির সাথে একটি সেট ডেটা স্ট্রাকচার বাস্তবায়ন করতে চাই -
- একটি সেটের একটি নতুন দৃষ্টান্ত তৈরি করতে কনস্ট্রাক্টর
- সেটের মধ্যে পূর্ণসংখ্যা ভাল সন্নিবেশ করতে যোগ(val) করুন ভ্যাল সেটে আছে কি না তা পরীক্ষা করার জন্য
- exists(val)
- সেট থেকে ভ্যাল অপসারণ করতে (val) সরান
সুতরাং, যদি আমরা একটি সেট তৈরি করি, তাহলে s.add(10), s.add(20), s.add(10), s.exists(10), s.remove(10), s.exists(কে কল করুন। 10), s.exists(20), তারপর আউটপুট হবে
- s.add(10) এর জন্য এটি 10 সন্নিবেশ করবে
- s.add(20) এর জন্য এটি 20 সন্নিবেশ করবে
- 10 ইতিমধ্যে s-এ আছে, তাই কিছুই হবে না
- s.exists(10) 10 আছে বলে true ফিরে আসবে
- s.remove(10) দ্বারা 10 মুছুন
- s.exists(10) মিথ্যা ফেরত দেবে কারণ 10 সরানো হয়েছে এবং একটি উপাদান শুধুমাত্র একবার সেখানে থাকতে পারে
- s.exists(20) সত্য ফিরে আসবে কারণ সেখানে 20 উপস্থিত রয়েছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- নির্মাণকারীকে সংজ্ঞায়িত করুন।
- বালতি :=একটি খালি মানচিত্র এবং এতে ডেটার একটি তালিকা থাকবে
- একটি ফাংশন সংজ্ঞায়িত করুন add()। এটি ভাল লাগবে
- যদি বিদ্যমান (ভাল) মিথ্যা হয়, তাহলে
- বালতির শেষে val সন্নিবেশ করান[val]
- একটি ফাংশন বিদ্যমান() সংজ্ঞায়িত করুন। এটি ভাল লাগবে
- ভ্যাল বালতিতে থাকলে সত্য প্রত্যাবর্তন করুন[val], অন্যথায় মিথ্যা
- একটি ফাংশন রিমুভ () সংজ্ঞায়িত করুন। এটি ভাল লাগবে
- বালতি মুছুন[ভাল]
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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)) s.remove(10) print(s.exists(10)) print(s.exists(20))
ইনপুট
s = MySet() s.add(10) s.add(20) s.add(10) s.exists(10) s.remove(10) s.exists(10) s.exists(20)
আউটপুট
True False True