在Python中找到第i个和第j个元素相同的数字对的数量

在Python中找到第i个和第j个元素相同的数字对的数量

假设我们有一个名为nums的数组。我们必须找到有多少个数字对(i,j)使得nums[i] = nums[j]但i和j不相同。

所以,如果输入如下nums = [1,3,1,3,5],那么输出将是4,因为这些数字对是(0,2),(2,0),(1,3)和(3,1)。

为了解决这个问题,我们需要遵循以下步骤-

  • d := 一个新的map
  • 对于nums中的每个c,执行以下操作:
    • 如果c在d中,则d[c] := (d[c] + 1),否则设置为1。
  • res := 0
  • 对于列表中的每个元素c(其中x是d中所有d[x]> 1的x),执行以下操作:
    • res := res + (d[c] * (d[c]-1))
  • 返回结果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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程