程式語言 - LeetCode - C++ - 421. Maximum XOR of Two Numbers in an Array



參考資訊:
https://www.cnblogs.com/grandyang/p/5991530.html

題目:


解答:

class Solution {
public:
    int findMaximumXOR(vector<int>& nums) {
        int ans = 0;
        int mask = 0;

        for (int i = 31; i >= 0; --i) {
            unordered_set<int> nm;

            mask |= (1 << i);
            for (int n : nums) {
                nm.insert(n & mask);
            }

            int t = ans | (1 << i);
            for (int n : nm) {
                if (nm.count(n ^ t)) {
                    ans = t;
                    break;
                }
            }
        }

        return ans;
    }
};