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

Pythonの2つの数値リストから最大距離ペアを見つけるプログラム


AとBという2つの番号のリストがあり、それらの長さが同じであるとします。すべての0≤i

したがって、入力がA =[2、4、10、6] B =[3、4、7、5]の場合、i=0およびj=2の場合のように、出力は14になります。 2-10 | + | 3-7 | + |1-3|。

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

  • ans:=0
  • n:=aのサイズ
  • [(-1、-1)、(-1、1)、(1、-1)、(1、1)]の各ペア(s、t)について、実行
    • cur_min:=無限大
    • cur_max:=-infinity
    • 0からnの範囲のiについては、
      • tmp:=s * a [i] + t * b [i] + i
      • cur_min:=cur_min、tmpの最小値
      • cur_max:=cur_max、tmpの最大値
    • ans:=ansの最大値、(cur_max --cur_min)
  • 回答を返す

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

class Solution:
   def solve(self, a, b):
      ans = 0
      n = len(a)
      for s, t in [(-1, -1), (-1, 1), (1, -1), (1, 1)]:
         cur_min = float("inf")
         cur_max = float("-inf")
         for i in range(n):
            tmp = s * a[i] + t * b[i] + i
            cur_min = min(cur_min, tmp)
            cur_max = max(cur_max, tmp)
            ans = max(ans, cur_max - cur_min)
      return ans
ob = Solution()
A = [2, 4, 10, 6]
B = [3, 4, 7, 5]
print(ob.solve(A, B))

入力

[2, 4, 10, 6],[3, 4, 7, 5]

出力

14

  1. Pythonで合計kになるリスト内の任意の2つの数値を検索するプログラム

    numsと呼ばれる数のリストがあり、別の数kがあるとすると、リストに存在する2つの数の合計がkになるかどうかを確認する必要があります。同じ要素を2回使用しないでください。また、数値は負または0にすることができます。 したがって、入力がnums =[45、18、9、13、12]、k =31のような場合、出力はTrueになります(18 + 13 =31 )。 これを解決するには、次の手順に従います- temp_set:=新しいセット numsの各numに対して、実行します numがtemp_setにある場合、 Trueを返す temp_setに(k-num)を追加します Fa

  2. 2つのソートされた配列から最も近いペアを見つけるためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの配列が与えられたので、2つのソートされた配列から最も近いペアを見つける必要があります 次に、以下の実装のソリューションを見てみましょう- 例 # sys module import sys # pair def print_(ar1, ar2, m, n, x):    # difference    diff=sys.maxsize    # index    l = 0    r = n-1 &