Number of Good Pairs LeetCode
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:
Input: nums = [1,1,1,1]
Output: 6
Explanation: Each pair in the array are good.
Example 3:
Input: nums = [1,2,3]
Output: 0
Brute Force:
class Solution {
public int numIdenticalPairs(int[] nums) {
int count=0;
for(int i=0;i<nums.length;i++)
{
for(int j=1;j<nums.length;j++)
{ if(nums[i]==nums[j] && i<j)
{
count++;
}
}
}
return count;
}
}
Optimal Approach:
class Solution {
public int numIdenticalPairs(int[] nums) {
// This map will store how many times each number appears
HashMap<Integer, Integer> map = new HashMap<>();
int count = 0;
// Loop through every number in the array
for (int num : nums) {
// If we have already seen this number
if (map.containsKey(num)) {
// Add the number of times we've seen it to the count
count += map.get(num);
// Update the count of this number in the map
map.put(num, map.get(num) + 1);
} else {
// First time seeing this number, so store it as 1
map.put(num, 1);
}
}
// Return the total number of good pairs
return count;
}
}
Comments
Post a Comment