Count Good Meals LeetCode solution in JavaScript

1
var countPairs = function (deliciousness) {
2
const n = deliciousness.length;
3
const MOD = 1e9 + 7;
4

5
const map = new Map();
6

7
for (const num of deliciousness) {
8
if (!map.has(num)) map.set(num, 0);
9
map.set(num, map.get(num) + 1);
10
}
11

12
let max = 2 ** 21;
13
let res = 0;
14

15
for (const [num, count] of map) {
16
let two = 1;
17

18
while (two <= max) {
19
const diff = two - num;
20

21
if (diff >= 0 && map.has(diff)) {
22
const otherCount = map.get(diff);
23

24
if (num != diff) res += count * otherCount;
25
else res += (count * (count - 1)) / 2;
26
}
27

28
two <<= 1;
29
}
30

31
map.delete(num);
32
}
33

34
return res % MOD;
35
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0