Python中定義支援區間和的資料結構的程式


假設我們想開發一種資料結構,它可以用整數列表構建,並且有一個函式可以在需要時高效地查詢從索引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。

為了解決這個問題,我們將遵循以下步驟:

  • 定義建構函式。這將接收陣列。
  • sums := 這是一個列表,最初插入 0。
  • 對於陣列中的每個 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

更新於:2021年10月14日

瀏覽量:152

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.