网络异常,图片无法展示
|
题目
给你一个整数数组 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 开始 示例 2: 输入:nums = [1,1,1,1] 输出:6 解释:数组中的每组数字都是好数对 示例 3: 输入:nums = [1,2,3] 输出:0
提示:
1 <= nums.length <= 100 1 <= nums[i] <= 100
解题思路
class Solution: def numIdenticalPairs(self, nums: List[int]) -> int: # # 粗暴计算法 # res = 0 # for i in range(len(nums)): # for j in range(i+1,len(nums)): # if nums[i] == nums[j]: # res += 1 # return res #用哈希表统计每个数在序列中出现的次数 from collections import Counter numsDic = Counter(nums) res = 0 for val in numsDic.values(): res += (val*(val-1))//2 return res if __name__ == '__main__': nums = [1,2,3,1,1,3] ret = Solution().numIdenticalPairs(nums) print(ret)