Skip to content

Commit 162b200

Browse files
solves count special quadruplets
1 parent b2967d4 commit 162b200

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@
477477
| 1979 | [Find Greatest Common Divisor of Array](https://leetcode.com/problems/find-greatest-common-divisor-of-array) | [![Java](assets/java.png)](src/FindGreatestCommonDivisorOfArray.java) | |
478478
| 1984 | [Minimum Difference Between Highest and Lowest of K Scores](https://leetcode.com/problems/minimum-difference-between-highest-and-lowest-of-k-scores) | [![Java](assets/java.png)](src/MinimumDifferenceBetweenHighestAndLowestOfKScores.java) | |
479479
| 1991 | [Find the Middle Index in Array](https://leetcode.com/problems/find-the-middle-index-in-array) | [![Java](assets/java.png)](src/FindTheMiddleIndexInArray.java) | |
480-
| 1995 | [Count Special Quadruplets](https://leetcode.com/problems/count-special-quadruplets) | | |
480+
| 1995 | [Count Special Quadruplets](https://leetcode.com/problems/count-special-quadruplets) | [![Java](assets/java.png)](src/CountSpecialQuadruplets.java) | |
481481
| 2000 | [Reverse Prefix of Word](https://leetcode.com/problems/reverse-prefix-of-word) | | |
482482
| 2006 | [Count Number of Pairs With Absolute Difference K](https://leetcode.com/problems/count-number-of-pairs-with-absolute-difference-k) | | |
483483
| 2011 | [Final Value of Variable After Performing Operations](https://leetcode.com/problems/final-value-of-variable-after-performing-operations) | | |

Diff for: src/CountSpecialQuadruplets.java

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// https://leetcode.com/problems/count-special-quadruplets
2+
// T: O(N^2)
3+
// S: O(N^2)
4+
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
8+
public class CountSpecialQuadruplets {
9+
public int countQuadruplets(int[] nums) {
10+
final Map<Integer, Integer> differenceFreq = new HashMap<>();
11+
differenceFreq.put(nums[nums.length -1] - nums[nums.length - 2], 1);
12+
int quadruplets = 0;
13+
14+
for (int b = nums.length - 3 ; b > 0 ; b--) {
15+
for (int a = b - 1 ; a >= 0 ; a--) {
16+
quadruplets += differenceFreq.getOrDefault(nums[a] + nums[b], 0);
17+
}
18+
19+
for (int x = b + 1 ; x < nums.length ; x++) {
20+
int difference = nums[x] - nums[b];
21+
differenceFreq.put(difference, differenceFreq.getOrDefault(difference, 0) + 1);
22+
}
23+
}
24+
25+
return quadruplets;
26+
}
27+
}

0 commit comments

Comments
 (0)