b_lc_大餐计数(枚举+哈希表)

每次从A中选两个数,求满足两数之和是2的幂次方数的个数

思路:记得要枚举所有的2次方数哦

class Solution:
    def countPairs(self, A: List[int]) -> int:
        n,ans,mod,E=len(A),0,int(1e9+7),1<<21
        mp=collections.defaultdict(int)
        for i in A:
            for shift in range(0,22): 
                d=(1<<shift)-i
                ans=(ans+mp.get(d,0))%mod
            mp[i]=mp.get(i,0)+1
        return ans
原文地址:https://www.cnblogs.com/wdt1/p/14225154.html