Recuento de festines de LeetCode

class Solution {
    
    
public:
    int countPairs(vector<int>& deliciousness) {
    
    

        // 每个键值对的键是元素,每个键值对的值目前为止该元素出现的个数。
        unordered_map<int, int> m;

        int ans = 0;
        int MOD = 1e9 + 7;

        for (auto d : deliciousness)
        {
    
    
            // 两个餐品美味程度之和的最大值是2**21,因为每个餐品美味程度的最大值是2**20
            for (int i = 0; i < 22; i++)
            {
    
    
                int target = pow(2, i);

                // 如果当前元素的互补元素出现在了map中
                if (m.count(target - d))
                {
    
    
                    ans += m[target - d];
                    ans %= MOD;
                }
            }
            // 如果map中不存在某个键,该键对应的值为0
            m[d]++;
        }

        return ans;
    }
};

Supongo que te gusta

Origin blog.csdn.net/qq_32862515/article/details/112251873
Recomendado
Clasificación