1512.好数对的数目
1.题目
2.我的解决方案
- 先排序
- 利用while循环,ls.count(nums[i])统计个数,然后利用数学中的组合公式计算
- 要注意结果在累加过程中索引是跳跃性变化的
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( n ) O(n) O(n)
3.官方的解决方案
- 反思:思路和我的是一样的,但是更善于使用现成的工具
- collections.Counter使用起来更方便
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()) # 利用到了数学中的组合公式
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( n ) O(n) O(n)