Python程序:查找数组中相同元素的对数 (i, j)


假设我们有一个数组 nums。我们需要找到满足 nums[i] = nums[j] 但 i 不等于 j 的对数 (i,j)。

因此,如果输入类似 nums = [1,3,1,3,5],则输出将为 4,因为对数为 (0,2), (2,0), (1,3) 和 (3,1)。

为了解决这个问题,我们将遵循以下步骤:

  • d := 一个新的字典
  • 对于 nums 中的每个元素 c,执行以下操作:
    • 如果 c 在 d 中存在,则 d[c] := (d[c] + 1),否则 d[c] := 1
  • res := 0
  • 对于字典 d 中所有值大于 1 的元素 c,执行以下操作:
    • 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

更新时间: 2021年10月25日

213 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告