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

Pythonで数値リストのすべてのサブシーケンスの幅の合計を見つけるプログラム


numsと呼ばれる数のリストがあるとします。数列の最大数と最小数の差としての数列の幅。 numsのすべてのサブシーケンスの幅の合計を見つける必要があります。答えが非常に大きい場合は、結果を10 ^ 9+7で変更します。

したがって、入力がnums =[7、4、9]の場合、出力は15になります。これは、[7]、[4]、[9]、[7、4]、[のようなサブシーケンスがあるためです。 7、9]、[4、9]、[7、4、9]であるため、幅は0、0、0、3、2、5、5なので、15を取得します。

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

  • m:=10 ^ 9 + 7

  • リスト番号を並べ替える

  • ans:=0

  • power:=(nums + 1)と同じサイズのリストで、1で埋めます

  • 範囲1からnums+1のサイズのiの場合、実行します

    • power [i]:=power [i-1] * 2 mod m

    • 0からnumsのサイズの範囲のiの場合、実行します

      • 正:=(power [i]-1)* nums [i]

      • 負の数:=(power [size of nums --i --1]-1)* nums [i]

      • ans:=(ans +正-負)mod m

  • ansを返す

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

class Solution:
   def solve(self, nums):
      m = 10**9 + 7
      nums.sort()
      ans = 0
      power = [1] * (len(nums) + 1)
      for i in range(1, len(nums) + 1):
         power[i] = power[i - 1] * 2 % m
      for i in range(0, len(nums)):
         positive = (power[i] - 1) * nums[i]
         negative = (power[len(nums) - i - 1] - 1) * nums[i]
         ans = (ans + positive - negative) % m
      return ans
ob = Solution()
nums = [7, 4, 9]
print(ob.solve(nums))

入力

[7, 4, 9]

出力

15

  1. リスト内の要素の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力としてリストが与えられた場合、与えられたリストの合計を計算する必要があります。 ここでは、考慮すべき2つのアプローチがあります。つまり、組み込み関数を使用する方法と、ブルートフォースアプローチを使用する方法です。 アプローチ1-組み込み関数の使用 例 # main arr = [1,2,3,4,5] ans = sum(arr) print ('Sum of the array is ',ans) 出力 15 すべての変数と関数はグローバルスコープで宣言されて

  2. リスト内のすべてのペア間の絶対差の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 リスト入力が与えられた場合、リスト内のすべてのペア間の絶対差の合計を見つける必要があります。 列挙() メソッドは、反復可能オブジェクトにカウンターを追加し、それを列挙オブジェクトタイプの形式で返します。 この方法では、絶対差を含むリスト「diffs」があります。 2つの変数が初期化された2つのループを使用します。 1つはカウンターを反復処理し、もう1つはリスト要素を反復処理します。すべての反復で、要素が類似しているかどうかを確認します。 そうでない場合は、絶対差を見つけて、それ