Skip to content

Commit 67cdad0

Browse files
authored
Create 1711-count-good-meals.js
1 parent 50e089a commit 67cdad0

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

1711-count-good-meals.js

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/**
2+
* @param {number[]} deliciousness
3+
* @return {number}
4+
*/
5+
const countPairs = function (deliciousness) {
6+
const N = deliciousness.length
7+
deliciousness.sort((a, b) => a - b)
8+
const mp = {},
9+
mod = 10 ** 9 + 7
10+
let ret = 0
11+
for (let i = 0; i < N; i++) {
12+
if (deliciousness[i] !== 0) {
13+
let sum = 1 << (32 - __builtin_clz(deliciousness[i]) - 1)
14+
ret += mp[sum - deliciousness[i]] || 0
15+
ret += mp[(sum << 1) - deliciousness[i]] || 0
16+
if (ret >= mod) ret -= mod
17+
}
18+
if (mp[deliciousness[i]] == null) mp[deliciousness[i]] = 0
19+
mp[deliciousness[i]]++
20+
}
21+
return ret
22+
}
23+
24+
function __builtin_clz(num) {
25+
if (num === 0) return 32
26+
return 32 - dec2bin(num).length
27+
}
28+
29+
function dec2bin(num) {
30+
return (num >>> 0).toString(2)
31+
}

0 commit comments

Comments
 (0)