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

ペアの要素がPythonの異なる行にあるように、指定された合計でペアを検索します


一意の要素の行列と合計があるとします。合計が与えられた合計に等しい行列からすべてのペアを見つける必要があります。ここでは、ペアの各要素が異なる行から取得されます。

したがって、入力が-

のような場合
2 4 3 5
6 9 8 7
10 11 14 12
13 1 15 16

sum =13の場合、出力は[(2、11)、(4、9)、(3、10)、(5、8)、(12、1)]>

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

  • res:=新しいリスト

  • n:=行列のサイズ

  • 0からnの範囲のiの場合、実行

    • リスト行列を並べ替える[i]

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

    • i + 1からnの範囲のjについては、次のようにします

      • 低:=0、高:=n-1

      • =0の場合、実行

        • (matrix [i、low] + matrix [j、high])がsumと同じ場合、

          • pair:=(matrix [i、low]、matrix [j、high])を使用してペアを作成します

          • resの最後にペアを挿入

          • 低:=低+ 1

          • 高:=高-1

        • それ以外の場合

          • if(matrix [i] [low] + matrix [j] [high])

            • 低:=低+ 1

          • それ以外の場合

            • 高:=高-1

  • 解像度を返す

例(Python)

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

MAX = 100
def sum_pair(matrix, sum):
   res = []
   n = len(matrix)
   for i in range(n):
   matrix[i].sort()
   for i in range(n - 1):
      for j in range(i + 1, n):
         low = 0
         high = n - 1
         while (low < n and high >= 0):
            if ((matrix[i][low] + matrix[j][high]) == sum):
               pair = (matrix[i][low],matrix[j][high])
               res.append(pair)
               low += 1
               high -= 1
         else:
         if ((matrix[i][low] + matrix[j][high]) < sum):
            low += 1
         else:
            high -= 1
   return res

sum = 13
matrix = [
   [2, 4, 3, 5],
   [6, 9, 8, 7],
   [10, 11, 14, 12],
   [13, 1, 15, 16]]
print(sum_pair(matrix, sum))

入力

[[2, 4, 3, 5],
[6, 9, 8, 7],
[10, 11, 14, 12],
[13, 1, 15, 16]]
sum = 13
>

出力

[(4, 9), (5, 8), (2, 11), (3, 10), (12, 1)]

  1. ペア要素がPythonの異なるBSTにあるように、指定された合計を持つペアを検索します

    2つの二分探索木が与えられ、別の合計が与えられたとします。各ペア要素が異なるBSTに存在する必要があるように、与えられた合計に関してペアを見つける必要があります。 したがって、入力がsum=12のような場合 その場合、出力は[(6、6)、(7、5)、(9、3)]になります。 これを解決するには、次の手順に従います- 関数solve()を定義します。これには、trav1、trav2、Sumが必要です。 左:=0 右:=trav2のサイズ-1 res:=新しいリスト 左=0の間、実行 trav1 [left] + trav2 [right]がSumと

  2. Pythonのインデックスでリストの要素を検索する

    2つのリストを考えてみましょう。 2番目のリストの要素は、最初のリストの要素のインデックス位置と見なす必要がある数値です。このシナリオでは、以下のPythonプログラムがあります。 マップとgetitemを使用 getitemマジックメソッドを使用してリストアイテムにアクセスできます。これをmap関数と一緒に使用できるため、2番目のリストの要素をインデックスとして取得する最初のリストから結果を取得できます。 例 listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] listB =