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

Pythonで配列要素が同じであるインデックスペアをカウントするプログラム


numsという番号のリストがあるとします。 nums[i]とnums[j]が同じになるように、ペアの数i

したがって、入力がnums =[5、4、5、4、4]のような場合、(0、2)、(1、3)、(1、4のようなインデックスペアがあるため、出力は4になります。 )および(3、4)。

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

  • c:=numsに存在する各要素の頻度を含むリスト

  • カウント:=0

  • cのすべての値のリストにあるnごとに、実行します

    • count:=count + floor of(n *(n-1))/ 2

  • 返品数

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

from collections import Counter
def solve(nums):
   c = Counter(nums)
   count = 0
   for n in c.values():
      count += n * (n - 1) // 2
   return count

nums = [5, 4, 5, 4, 4]
print(solve(nums))

入力

[5, 4, 5, 4, 4]

出力

4

  1. 配列内の反転をカウントするPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。必要な反転をカウントして表示する必要があります。 反転カウントは、配列をソートするために必要なステップ数をカウントすることによって取得されます。 次に、以下の実装のソリューションを見てみましょう- 例 # count def InvCount(arr, n):    inv_count = 0    for i in range(n):       for j in range(i + 1, n):  

  2. 配列ローテーション用のPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −テキストとパターンが与えられた場合、パターンのすべての出現とその順列(またはアナグラム)をテキストで印刷する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # maximum value MAX = 300 # compare def compare(arr1, arr2):    for i in range(MAX):       if arr1[i] != arr2[i]:       &nbs