问题背景
给你一个整数数组 n u m s nums nums。
如果一组数字 ( i , j ) (i,j) (i,j) 满足 n u m s [ i ] = n u m s [ j ] nums[i] = nums[j] nums[i]=nums[j] 且 i < j i < j i<j,就可以认为这是一组 好数对 。
返回好数对的数目。
数据约束
- 1 ≤ n u m s . l e n g t h ≤ 100 1 \le nums.length \le 100 1≤nums.length≤100
- 1 ≤ n u m s [ i ] ≤ 100 1 \le nums[i] \le 100 1≤nums[i]≤100
解题过程
用哈希表维护每个数字出现的次数,每次遇到一个元素的时候,累计它出现过的次数就可以了。
具体实现
java
class Solution {
public int numIdenticalPairs(int[] nums) {
int res = 0;
Map<Integer, Integer> count = new HashMap<>();
for (int num : nums) {
int cur = count.getOrDefault(num, 0);
res += cur;
count.put(num, cur + 1);
}
return res;
}
}