📌  相关文章
📜  通过仅将每个元素包含在一对中,可能的不同数组元素对的最大数量(1)

📅  最后修改于: 2023-12-03 15:41:59.954000             🧑  作者: Mango

最大数量的不同数组元素对

问题描述

给定一个整数数组,通过仅将每个元素包含在一对中,找到可能的不同数组元素对的最大数量。

解法

使用一个哈希表记录每个数字出现的次数,然后遍历哈希表,对于出现次数大于1的数字,计算其可能产生的不同数字对的数量,更新最大值即可。

def max_pairs(nums):
    freq = {}
    for num in nums:
        freq[num] = freq.get(num, 0) + 1
    max_pairs = 0
    for num, count in freq.items():
        if count > 1:
            pairs = count * (count - 1) // 2
            max_pairs = max(max_pairs, pairs)
    return max_pairs
示例
>>> nums = [1, 2, 3, 2, 1, 3, 3]
>>> max_pairs(nums)
6

>>> nums = [1, 1, 1, 1, 1]
>>> max_pairs(nums)
10
时间复杂度

遍历一遍数组加上遍历哈希表,时间复杂度为 $O(n)$。

空间复杂度

使用一个哈希表记录数字出现的次数,所以空间复杂度为 $O(n)$。