421.数组中两个数的最大异或值

​​题目来源:

        leetcode题目,网址:421. 数组中两个数的最大异或值 - 力扣(LeetCode)

解题思路:

       int 型 数据有 32 位。从最高位开始逐位判断能否为 1,若可以,该位置 1,否则该位置0,然后继续判断下一位。

解题代码:

class Solution {
public:
    int findMaximumXOR(vector& nums) {
       int res=0;
       for(int i=31;i>=0;i--){
           unordered_set set;
           for(int num:nums){
               set.insert(num>>i);
           }

           res=(res<<1)+1;
           bool flag=false;
           for(int num:set){
               if(set.count(res^num)!=0){
                   flag=true;
                   break;
               }
           }
           if(!flag){
               res=res-1;
           }
       }
       return res;
    }
};

总结:

        没做出来,看官方题解的。官方题解给出了两种解法。第一种如上,第二种是利用字典树。


你可能感兴趣的:(#,C++,LeetCode,C++)