Pythonでソートされた3つの異なる配列の(max(A [i]、B [j]、C [k])– min(A [i]、B [j]、C [k]))を最小化します
3つのソートされた配列A、B、およびC(これらは異なるサイズにすることができます)があるとすると、任意のトリプレットの最大数と最小数の間の最小絶対差を計算する必要があります(A [i]、B [j]、 C [k])それぞれ配列A、B、Cの下にあるように
したがって、入力がA:[2、5、6、9、11]、B:[7、10、16]、C:[3、4、7、7]のようである場合、出力は次のように1になります。 A [i] =6 B [j]=7およびC[k]=7を選択すると、max(A [i]、B [j]、C [k])-min(A [i]、B [j]、C [k]))=| 7-6 | =1
これを解決するには、次の手順に従います-
- i:=Aのサイズ-1
- j:=Bのサイズ-1
- k:=Cのサイズ-1
- minimum_dfference:=| A [i]、B [j]、C [k]の最大値-A[i]、B [j]、C[k]の最小値|
- iは-1と同じではなく、jは-1と同じではなく、kは-1と同じではありませんが、
- current_diff:=| A [i]、B [j]、C [k]の最大値-A[i]、B [j]、C[k]の最小値|
- current_diff
- minimum_dfference:=current_diff
- maximum_term:=A [i]、B [j]、C[k]の最大値
- A [i]がmaximum_termと同じ場合、
- i:=i-1
- それ以外の場合、B [j]がmaximum_termと同じである場合、
- j:=j-1
- それ以外の場合、
- k:=k-1>
例
理解を深めるために、次の実装を見てみましょう-
def solve(A, B, C): i = len(A) - 1 j = len(B) - 1 k = len(C) - 1 minimum_dfference = abs(max(A[i], B[j], C[k]) - min(A[i], B[j], C[k])) while i != -1 and j != -1 and k != -1: current_diff = abs(max(A[i], B[j], C[k]) - min(A[i], B[j], C[k])) if current_diff < minimum_dfference: minimum_dfference = current_diff maximum_term = max(A[i], B[j], C[k]) if A[i] == maximum_term: i -= 1 elif B[j] == maximum_term: j -= 1 else: k -= 1 return minimum_dfference A = [ 2, 5, 6, 9, 11 ] B = [ 7, 10, 16 ] C = [ 3, 4, 7, 7 ] print(solve(A, B, C))
入力
A = [ 2, 5, 6, 9, 11 ] B = [ 7, 10, 16 ] C = [ 3, 4, 7, 7 ]
出力
1
-
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 &
-
Pythonでintの最大値と最小値を知る方法は?
Pythonのコアライブラリには、リストまたはタプルオブジェクトの形式の一連の数値から最大数と最小数を見つけるために、それぞれmax()とmin()の2つの組み込み関数があります。 例 >>> max(23,21,45,43) 45 >>> l1=[20,50,40,30] >>> max(l1) 50 >>> t1=(30,50,20,40) >>> max(t1) 50 >>> min(l1) 20 >>> min(t1) 20 >>> min(2