给你一个整数数组 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:
counter = Counter(nums)
return sum([x * (x - 1) for x in counter.values()]) >> 1
class Solution {
public int numIdenticalPairs(int[] nums) {
Map<Integer, Integer> counter = new HashMap<>();
for (int num : nums) {
counter.put(num, counter.getOrDefault(num, 0) + 1);
}
int res = 0;
for (int n : counter.values()) {
res += n * (n - 1);
}
return res >> 1;
}
}
class Solution {
public:
int numIdenticalPairs(vector<int>& nums) {
unordered_map<int, int> counter;
for (int num : nums) {
++counter[num];
}
int res = 0;
for (auto& [num, n] : counter) {
res += n * (n - 1);
}
return res >> 1;
}
};
func numIdenticalPairs(nums []int) int {
counter := make(map[int]int)
for _, num := range nums {
counter[num]++
}
res := 0
for _, n := range counter {
res += n * (n - 1)
}
return res >> 1
}