
代码:
基础解法:两个for循环进行比较,挨个比较。
这需要 O(n *n)的时间。
class Solution:
def numIdenticalPairs(self, nums: List[int]) -> int:
sum = 0
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i] == nums[j]:
sum = sum+1
return sum
优化解法:


class Solution:
def numIdenticalPairs(self, nums: List[int]) -> int:
ans = 0 # 好数对的数量
cnt = defaultdict(int) # 创建默认字典,默认值为0
for x in nums: # 遍历数组,x = nums[j]
# 此时 cnt[x] 表示之前遍历过的 x 的个数,加到 ans 中
ans += cnt[x] # 关键:先加,后存
cnt[x] += 1 # 把当前 x 存入字典
return ans
将题目中数组的数据存入到创建的字典中,字典中:键是数据的标签,值是标签对应的数据。字典的结构就是 {键1: 值1, 键2: 值2, ...}。键是唯一的,不能重复的,否则值会被覆盖。
