Leetcode 421. 数组中两个数的最大异或值 位运算

原题链接:Leetcode 421. 数组中两个数的最大异或值

这道题说实话,还看不太懂

Leetcode 421. 数组中两个数的最大异或值 位运算_第1张图片
Leetcode 421. 数组中两个数的最大异或值 位运算_第2张图片
参考题解:利用异或运算的性质、假设修正

class Solution {
public:
    int findMaximumXOR(vector<int>& nums) {
        int mask=0,res=0;
        for(int i=30;i>=0;i--)
        {
            mask|=(1<<i);
            unordered_set<int> dp;
            for(auto num:nums) dp.insert(num&mask);
            int tmp=res|(1<<i);
            for(auto num:dp)
            {
                if(dp.count(num ^ tmp))
                {
                    res=tmp;
                    break;
                }
            }
        }
        return res;       
    }
};

你可能感兴趣的:(Leetcode,leetcode,算法,c++)