Count Special Quadruplets LeetCode solution in JavaScript

1
/**
2
* @param {number[]} nums
3
* @return {number}
4
*/
5
var countQuadruplets = function (nums) {
6
const map = new Map();
7

8
for (let i = 0; i < nums.length; i++) {
9
let n = nums[i];
10

11
if (map.has(n)) {
12
let t = map.get(n);
13
t.push(i);
14
map.set(n, t);
15
} else {
16
map.set(n, [i]);
17
}
18
}
19

20
let count = 0;
21

22
for (let a = 0; a < nums.length - 3; a++) {
23
for (let b = a + 1; b < nums.length - 2; b++) {
24
for (let c = b + 1; c < nums.length - 1; c++) {
25
let sum = nums[a] + nums[b] + nums[c];
26

27
let indexes = map.get(sum) || [];
28
//t is the d index that might exist
29
let t = c + 1;
30

31
let low = 0;
32
let high = indexes.length - 1;
33
let ans = -1;
34

35
while (low <= high) {
36
let mid = low + Math.floor((high - low) / 2);
37

38
if (indexes[mid] === t) {
39
ans = mid;
40
break;
41
}
42

43
if (indexes[mid] < t) {
44
low = mid + 1;
45
} else {
46
ans = mid;
47
high = mid - 1;
48
}
49
}
50

51
if (ans !== -1) {
52
count += indexes.length - ans;
53
}
54
}
55
}
56
}
57

58
return count;
59
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0