Skip to content

Commit aafcf58

Browse files
solves number of good pairs
1 parent de4b974 commit aafcf58

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@
382382
| 1496 | [Path Crossing](https://leetcode.com/problems/path-crossing) | [![Java](assets/java.png)](src/PathCrossing.java) | |
383383
| 1502 | [Can Make Arithmetic Progression From Sequence](https://leetcode.com/problems/can-make-arithmetic-progression-from-sequence) | [![Java](assets/java.png)](src/CanMakeArithmeticProgressionFromSequence.java) | |
384384
| 1507 | [Reformat Date](https://leetcode.com/problems/reformat-date) | [![Java](assets/java.png)](src/ReformatDate.java) | |
385-
| 1512 | [Number of Good Pairs](https://leetcode.com/problems/number-of-good-pairs) | | |
385+
| 1512 | [Number of Good Pairs](https://leetcode.com/problems/number-of-good-pairs) | [![Java](assets/java.png)](src/NumberOfGoodPairs.java) | |
386386
| 1518 | [Water Bottles](https://leetcode.com/problems/water-bottles) | | |
387387
| 1523 | [Count Odd Numbers In Interval Range](https://leetcode.com/problems/count-odd-numbers-in-an-interval-range) | | |
388388
| 1528 | [Shuffle Strings](https://leetcode.com/problems/shuffle-string) | | |

src/NumberOfGoodPairs.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// https://leetcode.com/problems/number-of-good-pairs
2+
// T: O(n)
3+
// S: O(n)
4+
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
8+
public class NumberOfGoodPairs {
9+
public int numIdenticalPairs(int[] nums) {
10+
Map<Integer, Integer> frequencies = getFrequencies(nums);
11+
int goodPairs = 0;
12+
for (int frequency : frequencies.values()) {
13+
goodPairs += nC2(frequency);
14+
}
15+
return goodPairs;
16+
}
17+
18+
private int nC2(int x) {
19+
return (x * (x - 1)) / 2;
20+
}
21+
22+
private Map<Integer, Integer> getFrequencies(int[] array) {
23+
final Map<Integer, Integer> frequencies = new HashMap<>();
24+
for (int element : array) {
25+
frequencies.put(element, frequencies.getOrDefault(element, 0) + 1);
26+
}
27+
return frequencies;
28+
}
29+
}

0 commit comments

Comments
 (0)