用 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
广告