Count Good Meals LeetCode solution in JavaScript
1var countPairs = function (deliciousness) {2const n = deliciousness.length;3const MOD = 1e9 + 7;45const map = new Map();67for (const num of deliciousness) {8if (!map.has(num)) map.set(num, 0);9map.set(num, map.get(num) + 1);10}1112let max = 2 ** 21;13let res = 0;1415for (const [num, count] of map) {16let two = 1;1718while (two <= max) {19const diff = two - num;2021if (diff >= 0 && map.has(diff)) {22const otherCount = map.get(diff);2324if (num != diff) res += count * otherCount;25else res += (count * (count - 1)) / 2;26}2728two <<= 1;29}3031map.delete(num);32}3334return res % MOD;35};