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

Pythonでi番目とj番目の要素が同じになるようにペア(i、j)の数を見つけるプログラム


配列numsがあるとします。 nums [i] =nums [j]となるようなペア(i、j)の数を見つける必要がありますが、iはjと同じではありません。

したがって、入力がnums =[1,3,1,3,5]のような場合、ペアは(0,2)、(2,0)、(1,3)であり、出力は4になります。 (3,1)

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

  • d:=新しい地図
  • numsの各cについて、
    • d [c]:=(d [c] + 1)cがdに存在する場合、それ以外の場合は1
  • res:=0
  • 各cが要素のリストにある場合(d [x]> 1であるdのすべてのxのx)、do
    • res:=res +(d [c] *(d [c] -1))
  • return res

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

def solve(nums):
   d = {}
   for c in nums:
      d[c] = d[c] + 1 if c in d.keys() else 1

   res = 0
   for c in (x for x in d if d[x] > 1):
      res += (d[c] * (d[c]-1))

   return res

nums = [1,3,1,3,5]
print(solve(nums))

入力

[1,3,1,3,5]

出力

4

  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 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の場合、実