मान लीजिए हम एक डेटा स्ट्रक्चर विकसित करना चाहते हैं जिसे इंटीजर्स की सूची के साथ बनाया जा सके, और एक फ़ंक्शन हो जो इंडेक्स i से इंडेक्स j-1 तक के एलिमेंट्स का योग कुशल तरीके से ढूंढ सके। दो फ़ंक्शन हैं:
- कंस्ट्रक्टर जो इंटीजर ऐरे के साथ नया इंस्टेंस बनाता है
- get_sum(i, j) ऐरे एलिमेंट्स के शुरूआती इंडेक्स i और अंतिम इंडेक्स j-1 तक के इंटीजर्स का योग लौटाता है
उदाहरण के लिए, यदि इनपुट है array = [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 है।
समाधान दृष्टिकोण
- कंस्ट्रक्टर परिभाषित करें जो array लेता है:
- sums := एक सूची, शुरुआत में 0 डालें
- array में प्रत्येक x के लिए:
- sums के अंत में (x + sums का अंतिम आइटम) डालें
- get_sum() फ़ंक्शन परिभाषित करें जो i, j लेता है:
- sums[j] - sums[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