3Sum With Multiplicity LeetCode solution in JavaScript

1
/**
2
* @param {number[]} arr
3
* @param {number} target
4
* @return {number}
5
*/
6
var threeSumMulti = function (arr, target) {
7
let count = 0;
8
arr.sort((a, b) => a - b);
9
for (let i = 0; i < arr.length - 2; i++) {
10
let j = i + 1,
11
k = arr.length - 1;
12
while (j < k) {
13
let sum = arr[i] + arr[j] + arr[k];
14
if (sum < target) {
15
j++;
16
} else if (sum > target) {
17
k--;
18
} else {
19
if (arr[j] !== arr[k]) {
20
let j1 = j,
21
k1 = k;
22
while (arr[j] === arr[j1]) {
23
j1++;
24
}
25
while (arr[k] === arr[k1]) {
26
k1--;
27
}
28
count += (j1 - j) * (k - k1);
29
j = j1;
30
k = k1;
31
} else {
32
for (let n = 1; n <= k - j; n++) {
33
count += n;
34
}
35
break;
36
}
37
}
38
}
39
}
40
return count % (10 ** 9 + 7);
41
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0