Skip to content

Commit 1f906b5

Browse files
authored
Create 2426-number-of-pairs-satisfying-inequality.js
1 parent 99fdc7b commit 1f906b5

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/**
2+
* @param {number[]} nums1
3+
* @param {number[]} nums2
4+
* @param {number} diff
5+
* @return {number}
6+
*/
7+
const numberOfPairs = function (nums1, nums2, diff) {
8+
const n = nums1.length, limit = 6 * 1e4, add = 3 * 1e4
9+
const bit = new BIT(limit)
10+
11+
let res = 0
12+
for(let j = 0; j < n; j++) {
13+
const d = nums1[j] - nums2[j] + add
14+
res += bit.query(d + diff)
15+
bit.update(d, 1)
16+
}
17+
18+
return res
19+
}
20+
21+
function lowBit(x) {
22+
return x & -x
23+
}
24+
class BIT {
25+
constructor(n) {
26+
this.arr = Array(n + 1).fill(0)
27+
}
28+
29+
update(i, delta) {
30+
if(i < 1) return
31+
while (i < this.arr.length) {
32+
this.arr[i] += delta
33+
i += lowBit(i)
34+
}
35+
}
36+
37+
query(i) {
38+
let res = 0
39+
if(i < 1) return res
40+
while (i > 0) {
41+
res += this.arr[i]
42+
i -= lowBit(i)
43+
}
44+
return res
45+
}
46+
}

0 commit comments

Comments
 (0)