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

サブシーケンスの最大合計を見つけるプログラム。2つの値の差はPythonでの位置の差と同じです。


numsと呼ばれる数値のリストがあるとすると、厳密に増加する値のサブシーケンスを選択します。ここで、2つの数値のそれぞれの違いは、2つのインデックスの違いと同じです。したがって、そのようなサブシーケンスの最大合計を見つける必要があります。

したがって、入力がnums =[6、7、9、9、8、5]の場合、インデックスが[0、1、]であるサブシーケンス[6、7、9]を選択すると、出力は22になります。 3]。連続する各数値の違いは[1、2]であり、これはそれらのインデックスの違いと同じです。

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

  • d:=空のマップ

  • インデックスiと値x(nums)ごとに、実行します

    • d [x − i]:=d [x − i] + x

  • dのすべての値の最大値を返す

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def solve(self, nums):
      from collections import defaultdict
      d = defaultdict(int)
      for i, x in enumerate(nums):
         d[x − i] += x
      return max(d.values())

ob1 = Solution()
nums = [6, 7, 9, 9, 8, 5]
print(ob1.solve(nums))

入力

[6, 7, 9, 9, 8, 5]

出力

22

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

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列の合計を計算するために必要な配列が与えられます。 合計を取得するために各インデックスで配列と要素全体をトラバースするブルートフォースアプローチについては、以下で説明します。合計を取得するための各インデックスについては、以下で説明します。 例 # sum function def sum_(arr,n):    # using built-in function    return(sum(arr)) # main arr = [11,22,33,44,55,66

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

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