मान लीजिए कि हम एक डेटा संरचना विकसित करना चाहते हैं जो पूर्णांकों की एक सूची के साथ बना सकता है, और जब भी हमें एक कुशल तरीके से आवश्यकता होती है तो इंडेक्स i से इंडेक्स j-1 तक तत्वों का योग खोजने के लिए एक फ़ंक्शन होता है। दो कार्य हैं।
- कन्स्ट्रक्टर जो पूर्णांक सरणी के साथ एक नया उदाहरण बनाता है।
- get_sum(i, j) प्रारंभिक अनुक्रमणिका i और अंत अनुक्रमणिका j-1 से सरणी तत्वों के पूर्णांकों का योग देता है।
इसलिए, यदि इनपुट सरणी =[5,2,3,6,4,7,8,9,3,2] की तरह है तो एक ऑब्जेक्ट obj का निर्माण करें, और कॉल फ़ंक्शन obj.get_sum(1,5) और obj। get_sum(4,8), तो आउटपुट क्रमशः 15 और 28 होगा। चूंकि पहली श्रेणी के तत्व [2,3,6,4] हैं, इसलिए योग 15 है और दूसरी श्रेणी के तत्व [4,7,8,9] हैं, यहां योग 28 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- कन्स्ट्रक्टर को परिभाषित करें। यह सरणी लेगा
- sums :=यह एक सूची है, प्रारंभ में 0 डालें
- सरणी में प्रत्येक x के लिए, करें
- रकम के अंत में
- सम्मिलित करें (x + (राशि का अंतिम आइटम))
- एक फ़ंक्शन को परिभाषित करें get_sum() । यह ले जाएगा मैं, जे
- वापसी की रकम[j] - रकम[i]
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
class RangeSum: def __init__(self, array): self.sums = [0] for x in array: self.sums.append(x + self.sums[-1]) def get_sum(self, i, j): return self.sums[j] - self.sums[i] array = [5,2,3,6,4,7,8,9,3,2] obj = RangeSum(array) print(obj.get_sum(1,5)) print(obj.get_sum(4,8))
इनपुट
[5,2,3,6,4,7,8,9,3,2] obj.get_sum(1,5) obj.get_sum(4,8)
आउटपुट
15 28