难度简单18
给你一个整数数组 nums
。
如果一组数字 (i,j)
满足 nums[i]
== nums[j]
且 i
< j
,就可以认为这是一组 好数对 。
返回好数对的数目。
示例 1:
输入:nums = [1,2,3,1,1,3]
输出:4
解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始
我的:
class Solution:
def numIdenticalPairs(self, nums: List[int]) -> int:
sum = 0
for i in [value for key,value in dict(Counter(nums)).items() if value > 1]:
sum+=int((i-1)*i/2)
return sum
参考1:
class Solution:
def numIdenticalPairs(self, nums: List[int]) -> int:
m = collections.Counter(nums)
return sum(v * (v - 1) // 2 for k, v in m.items())
参考2(哈希表):
class Solution:
def numIdenticalPairs(self, nums: List[int]) -> int:
Hash = {}
for i in nums:
Hash[i] = Hash.get(i, 0) + 1
res = 0
for key in Hash.keys():
if Hash.get(key) >= 2:
res += Hash[key] * (Hash[key] - 1) // 2
return res