मान लीजिए हम निम्नलिखित विधियों के साथ एक सेट डेटा संरचना लागू करना चाहते हैं:
- सेट का नया इंस्टेंस बनाने के लिए कंस्ट्रक्टर
add(val)पूर्णांकvalको सेट में डालने के लिएexists(val)जांचने के लिए किvalसेट में है या नहींremove(val)सेट सेvalको हटाने के लिए
इसलिए, यदि हम एक सेट s बनाते हैं, फिर 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 वहां हैs.remove(10)द्वारा 10 हटाएंs.exists(10)असत्य लौटाएगा क्योंकि 10 हटा दिया गया है और एक तत्व केवल एक बार हो सकता हैs.exists(20)सत्य लौटाएगा क्योंकि 20 वहां मौजूद है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- कंस्ट्रक्टर परिभाषित करें।
buckets :=एक खाली मैप और यह डेटा की सूची रखेगाadd()फ़ंक्शन परिभाषित करें। यहvalलेगा:- यदि
exists(val)गलत है, तो:valकोbuckets[val]के अंत में डालें
- यदि
exists()फ़ंक्शन परिभाषित करें। यहvalलेगा:- सत्य लौटाएं जब
valbuckets[val]में हो, अन्यथा असत्य
- सत्य लौटाएं जब
remove()फ़ंक्शन परिभाषित करें। यहvalलेगा:buckets[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