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

Pythonでこれらのペアの合計の差が最小化される2つの数値のペアを見つけるプログラム


numsと呼ばれる数値のリストがあり、これら2つのペアの合計の絶対差が最小になるように、そこから2つの数値のペアを選択するとします。

したがって、入力がnums =[3、4、5、10、7]の場合、これらのペア(3 + 7)-(4 + 5)=1を選択できるため、出力は1になります。

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

  • 距離:=新しいリスト
  • 範囲0からnums-2のサイズのiの場合、do
    • 範囲i+1からnums-1のサイズのjの場合、do
      • リストを挿入[|nums[i] --nums [j] | 、i、j]距離の終わりで
    • リストの距離を並べ替える
    • ans:=1 ^ 9
    • 範囲0から距離のサイズまでのiの場合-2、do
      • [dist、i1、i2]:=距離[i]
      • j:=i + 1
      • [dist2、i3、i4]:=距離[j]
      • j <(i1、i2、i3、i4)の距離と要素のサイズは一意ではありませんが、
        • [dist2、i3、i4]:=距離[j]
        • j:=j + 1
      • (i1、i2、i3、i4)の要素が一意である場合、
        • ans:=最小のansおよび(dist2-dist)
      • 回答を返す

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

サンプルコード

class Solution:
   def solve(self, nums):
      distances = []
      for i in range(len(nums) - 1):
         for j in range(i + 1, len(nums)):
            distances.append((abs(nums[i] - nums[j]), i, j))
      distances.sort()
      ans = 1e9
      for i in range(len(distances) - 1):
         dist, i1, i2 = distances[i]
         j = i + 1
         dist2, i3, i4 = distances[j]
         while j < len(distances) and len({i1, i2, i3, i4}) != 4:
            dist2, i3, i4 = distances[j]
            j += 1
         if len({i1, i2, i3, i4}) == 4:
            ans = min(ans, dist2 - dist)
      return ans

ob = Solution()
nums = [3, 4, 5, 10, 7]
print(ob.solve(nums))

入力

[3, 4, 5, 10, 7]

出力

1

  1. Pythonで2つの数値のシフトされたテーブル間の最小の違いを見つける

    =0。 したがって、入力がp=7およびq=17、r=6およびs=3の場合、出力は0になります。7の表=[7、14、21、28、35、42、49、 ...]および17のテーブル=[17、34、51、68、85、102、119、...]の場合、7のシフトされたテーブルは[13、20、27、34、41、48、55になります、...]および17のシフトされたテーブルは[20、37、54、71、88、105、121、...]になり、これらのシフトされたテーブルの2つの項の最小差は20-20=0になります。 これを解決するには、次の手順に従います- g:=(p、q)のgcd 違い:=|

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

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