ধরুন আমরা একটি ডাটা স্ট্রাকচার বানাতে চাই যার দুটি পদ্ধতি আছে −
- add(val) এটি ডেটা স্ট্রাকচারে ভ্যালু মান যোগ করে
- find(val) এটি পরীক্ষা করে যে দুটি উপাদান আছে কিনা যার যোগফল val বা না
আমাদের এটি ডিজাইন করতে হবে যাতে আমরা উড়ে গিয়ে ফলাফল পেতে পারি। যখনই কোনো প্রশ্ন আসে তখন আমরা সংখ্যার জন্য অনুসন্ধান করব না।
সুতরাং, যদি ইনপুটটি একটি বস্তুর অবজেক্ট তৈরি করার মত হয় এবং 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 এর সমান নয়৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- নির্মাণকারীকে সংজ্ঞায়িত করুন।
- সংখ্যা :=একটি নতুন সেট
- একাধিক :=একটি নতুন সেট
- একটি ফাংশন সংজ্ঞায়িত করুন()। এটি val
- লাগবে
- একাধিক মধ্যে val সন্নিবেশ করান
- অন্যথায়,
- সংখ্যায় val সন্নিবেশ করান
- একটি ফাংশন সংজ্ঞায়িত করুন find()। এটি ভাল লাগবে
- সংখ্যায় প্রতিটি n এর জন্য, করুন
- যদি n + n val এর সমান হয়, তাহলে
- যখন n মাল্টিপল থাকে তখন true রিটার্ন করুন
- অন্যথায় যখন val - n সংখ্যায় থাকে, তখন
- সত্য ফেরান
- যদি n + n val এর সমান হয়, তাহলে
- মিথ্যে ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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))
ইনপুট
print(obj.find(9)) print(obj.find(11)) print(obj.find(15))
আউটপুট
True True False