Skip to content

Commit 0b75413

Browse files
authored
Create 2179-count-good-triplets-in-an-array.js
1 parent a742357 commit 0b75413

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* @param {number[]} a
3+
* @param {number[]} b
4+
* @return {number}
5+
*/
6+
const goodTriplets = function(a, b) {
7+
let n = a.length, m = new Map(), res = 0;
8+
for (let i = 0; i < n; i++) m.set(b[i], i);
9+
let fen = new Fenwick(n + 3);
10+
for (let i = 0; i < n; i++) {
11+
let pos = m.get(a[i]);
12+
let l = fen.query(pos), r = (n - 1 - pos) - (fen.query(n - 1) - fen.query(pos));
13+
res += l * r;
14+
fen.update(pos, 1);
15+
}
16+
return res;
17+
};
18+
function Fenwick(n) {
19+
let tree = Array(n).fill(0);
20+
return { query, update }
21+
function query(i) {
22+
let sum = 0;
23+
i++;
24+
while (i > 0) {
25+
sum += tree[i];
26+
i -= i & -i;
27+
}
28+
return sum;
29+
}
30+
function update(i, v) {
31+
i++;
32+
while (i < n) {
33+
tree[i] += v;
34+
i += i & -i;
35+
}
36+
}
37+
}

0 commit comments

Comments
 (0)