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

Pythonで乗算された数の最大合計を見つけるプログラム


numsとmultipliersという2つのリストがあるとします。ここで、numsから任意の数を削除し、乗数から任意の数を削除してから、それらを乗算できる操作について考えてみます。リストの1つが空になるまでこの操作を繰り返す必要があり、乗算された数値の最大合計を見つける必要があります。

したがって、入力がnums =[-4、4、3]の乗数=[-2、2]のようである場合、出力は16になります。これは、-4を-2に、4を2に一致させて-4を取得できるためです。 * -2 + 4 * 2.

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

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

  • リストの乗数を並べ替える

  • res:=0

  • numsのサイズ<乗数のサイズの場合

    • numsとmultipliersを交換します:=multipliers、nums

  • n:=numsのサイズ

  • m:=乗数のサイズ

  • 0からm-1の範囲のiの場合、実行

    • 乗数[i]<=0の場合、

      • res:=res + nums[i]*乗数[i]

    • それ以外の場合

      • res:=res+乗数[i]*nums [n-(m --i)]

  • 解像度を返す

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

def solve(nums, multipliers):
   nums.sort()
   multipliers.sort()
   res = 0
   if len(nums) < len(multipliers):
      nums, multipliers = multipliers, nums

   n, m = len(nums), len(multipliers)
   for i in range(m):
      if multipliers[i] <= 0:
         res += nums[i] * multipliers[i]
      else:
         res += multipliers[i] * nums[n - (m - i)]
   return res

nums = [-4, 4, 3]
multipliers = [-2, 2]
print(solve(nums, multipliers))

入力

[-4, 4, 3], [-2, 2]

出力

16

  1. Pythonで1からNまでのすべての欠落している数字を見つけるプログラム

    サイズnのnumsと呼ばれる数値のリストがあり、リスト内のすべての数値が区間[1、n]に存在するとします。一部の要素は、2回表示され、他の要素は1回だけ表示される場合があります。リストにないように、[1、n]からすべての番号を見つける必要があります。昇順でソートされた番号を返す必要があります。線形の時間と一定のスペースを必要とする解決策を見つけようとする必要があります。 したがって、入力が[4、4、2、2、6、6]の場合、出力は[1、3、5]になります。 これを解決するには、次の手順に従います- arr:=サイズnums + 1の配列で、0で埋めます numsの各iについて、 ar

  2. 最大3つの数字を見つけるPythonプログラム

    このチュートリアルでは、3つの数字から最大量を見つけるプログラムを作成します。 3つの数字があり、その3つの数字から最大数を見つけることが目標です。 理解を深めるために、いくつかのサンプルテストケースを見てみましょう。 Input: a, b, c = 2, 34, 4 Output: 34 Input: a, b, c = 25, 3, 12 Output: 25 Input: a, b, c = 5, 5, 5 Output: 5 以下の手順に従って、3つの数字の中から最大数を見つけてください。 アルゴリズム 1. Initialise three numbers a, b