Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで範囲合計をサポートするデータ構造を定義するプログラム


整数のリストで構築できるデータ構造を開発したいとします。効率的な方法で必要なときはいつでも、インデックスiからインデックスj-1までの要素の合計を見つける関数があります。 2つの機能があります。

  • 整数配列を使用して新しいインスタンスを構築するコンストラクター。
  • 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であり、2番目の範囲要素は[4,7,8,9]であるため、ここでの合計は28です。

これを解決するには、次の手順に従います-

  • コンストラクターを定義します。これには配列が必要です
  • sums:=これはリストです。最初に0を挿入します
  • 配列内のxごとに、
    • 合計の最後に(x +(合計の最後の項目))を挿入します
  • 関数get_sum()を定義します。これにはi、jが必要です
  • return 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

  1. 配列ローテーション用のPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −テキストとパターンが与えられた場合、パターンのすべての出現とその順列(またはアナグラム)をテキストで印刷する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # maximum value MAX = 300 # compare def compare(arr1, arr2):    for i in range(MAX):       if arr1[i] != arr2[i]:       &nbs

  2. 配列の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '