मान लीजिए हम एक डेटा संरचना बनाना चाहते हैं जिसमें दो विधियाँ हों:
add(val)यह मानvalको डेटा संरचना में जोड़ता हैfind(val)यह जांचता है कि क्या दो तत्व हैं जिनका योगvalहै या नहीं
हमें इसे इस तरह डिज़ाइन करना है कि हम ऑन-द-फ्लाई परिणाम प्राप्त कर सकें। हम हर बार क्वेरी आने पर संख्याओं की खोज नहीं करेंगे।
इसलिए, यदि इनपुट है एक ऑब्जेक्ट obj बनाएं और कुछ संख्याएं 6, 14, 3, 8, 11, 15 जोड़ें, फिर जांचें जैसे obj.find(9), obj.find(11), obj.find(15), तो आउटपुट होगा True, True, False क्योंकि 9 को 6+3 से बनाया जा सकता है, 11 को 3+8 से बनाया जा सकता है। अब 15 डेटा संरचना में मौजूद है लेकिन कोई दो संख्याओं का योग 15 के समान नहीं है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- कंस्ट्रक्टर परिभाषित करें।
nums :=एक नया सेटmultiple :=एक नया सेटadd()फ़ंक्शन परिभाषित करें। यहvalलेगा:valकोmultipleमें डालें
- अन्यथा:
valकोnumsमें डालें
find()फ़ंक्शन परिभाषित करें। यहvalलेगा:numsमें प्रत्येकnके लिए, करें:- यदि
n + nvalके समान है, तो:- सत्य लौटाएं जब
nmultipleमें हो
- सत्य लौटाएं जब
- अन्यथा जब
val - nnumsमें हो, तो:Trueलौटाएं
- यदि
Falseलौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
class PairSumChecker:
def __init__(self):
self.nums = set()
self.multiple = set()
def add(self, val):
if val in self.nums:
self.multiple.add(val)
else:
self.nums.add(val)
def find(self, val):
for n in self.nums:
if n + n == val:
return n in self.multiple
elif val - n in self.nums:
return True
return False
obj = PairSumChecker()
obj.add(6)
obj.add(14)
obj.add(3)
obj.add(8)
obj.add(11)
obj.add(15)
print(obj.find(9))
print(obj.find(11))
print(obj.find(15))
इनपुट
obj.find(9), obj.find(11), obj.find(15)
आउटपुट
True True False