1512. Number of Good Pairs
Given an array of integers nums
, return the number of good pairs**.
A pair (i, j)
is called good if nums[i] == nums[j]
and i
< j
.
Example 1:
Input: nums = [1,2,3,1,1,3]
Output: 4
Explanation: There are 4 good pairs (0,3), (0,4), (3,4), (2,5) 0-indexed.
Example 2:
Example 3:
Constraints:
1 <= nums.length <= 100
1 <= nums[i] <= 100
Solution:
class Solution {
public int numIdenticalPairs(int[] nums) {
Map<Integer, List<Integer>> map = new HashMap<>();
/*
0 1 2 3. 4 5
[1, 2, 3, 1, 1, 3]
1, [3, 4
2, [1
3, [5
*/
for (int i = 0; i < nums.length; i++){
if (!map.containsKey(nums[i])){
map.put(nums[i], new ArrayList<Integer>());
}else{
map.get(nums[i]).add(i);
}
}
int result = 0;
for (Map.Entry<Integer, List<Integer>> entry : map.entrySet()){
result = result + (1 + entry.getValue().size())* entry.getValue().size()/2;
};
return result;
}
}
// TC: O(n)
// SC: O(n)