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

Pythonでソートされた配列の絶対差の合計を見つけるプログラム


配列numsがあり、それが降順ではない順序でソートされているとします。 result [i]がnums[i]と配列内の他のすべての要素との絶対差の合計になるように、numsと同じ長さのresultという配列を作成する必要があります。

したがって、入力がnums =[5,7,12]のような場合、出力は[9、7、12]になります。

  • | 5-5 | + | 5-7 | + | 5-12 | =0 + 2 + 7 =9
  • | 7-5 | + | 7-7 | + | 7-12 | =2 + 0 + 5 =7
  • | 5-12 | + | 7-12 | + | 12-12 | =7 + 5 + 0 =12

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

  • res:=新しいリスト
  • s:=0
  • n:=numsのサイズ
  • 1からn-1の範囲のiの場合、do
    • s:=s + nums [i]-nums [0]
  • resの最後にsを挿入
  • 1からn-1の範囲のiの場合、do
    • diff:=nums [i]-nums [i-1]
    • s:=s + diff * i
    • s:=s --diff *(n-i)
  • resの最後にsを挿入
  • return res

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

def solve(nums):
   res = []
   s=0
   n = len(nums)
   for i in range(1,n):
      s+=nums[i]-nums[0]
   res.append(s)
   for i in range(1,n):
      diff = nums[i]-nums[i-1]
      s += diff*i
      s -= diff *(n-i)
      res.append(s)
   return res

nums = [5,7,12]
print(solve(nums))

入力

[5,7,12]

出力

[9, 7, 12]

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

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

  2. Pythonプログラムでの挿入ソート

    この記事では、Python3.xでの挿入ソートの実装について学習します。またはそれ以前。 アルゴリズム ソートされた配列を各反復で拡張することにより、入力要素を反復します。 現在の要素を、並べ替えられた配列で使用可能な最大値と比較します。 現在の要素の方が大きい場合は、その要素をそのままにして次の要素に移動します。それ以外の場合は、並べ替えられた配列内で正しい位置を見つけて、配列内のその位置に移動します。 これは、並べ替えられた配列内の現在の要素よりも大きいすべての要素を右にシフトすることで実現されます。 それでは、アルゴリズムの視覚的表現を見てみましょう