题目
给你一个整数数组 nums 。
如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。
返回好数对的数目。
nums = [1,2,3,1,1,3],有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5)
解题思路
- 构建map,key为nums[i],值为次数
- 使用组合算法,Cn2累加,即rst += n*(n-1)/2
代码
public static int numIdenticalPairs(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i], map.get(nums[i]) == null ? 1 : map.get(nums[i]) + 1);
}
int rst = 0;
for (int key : map.keySet()) {
rst += map.get(key) * (map.get(key) - 1) / 2;
}
return rst;
}
8988

被折叠的 条评论
为什么被折叠?



