📅  最后修改于: 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)$。