用 Python 编写程序来统计数组元素相同的索引对


假设我们有一个称为 nums 的数字列表。我们必须找到满足以下条件的 i < j 对数:nums[i] 和 nums[j] 相同。

因此,如果输入类似于 nums = [5, 4, 5, 4, 4],则输出为 4,因为我们有索引对 (0, 2)、(1, 3)、(1, 4) 和 (3, 4)。

要解决这个问题,我们将按照以下步骤进行操作:-

  • c:包含 nums 中每个元素出现频率的列表

  • count:0

  • 对于 c 的所有值的列表中的每个 n,执行

    • count:count 加上 (n*(n-1))/2 的向下取整

  • 返回 count

示例

让我们看以下实现来获得更好的理解

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

更新于: 2021-10-11

556 次浏览

开启你的职业生涯

完成课程获得认证

开始
广告