本文主要是介绍421.数组中两个数的最大异或值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目来源:
leetcode题目,网址:421. 数组中两个数的最大异或值 - 力扣(LeetCode)
解题思路:
int 型 数据有 32 位。从最高位开始逐位判断能否为 1,若可以,该位置 1,否则该位置0,然后继续判断下一位。
解题代码:
class Solution {
public:int findMaximumXOR(vector<int>& nums) {int res=0;for(int i=31;i>=0;i--){unordered_set<int> 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;}
};
总结:
没做出来,看官方题解的。官方题解给出了两种解法。第一种如上,第二种是利用字典树。
这篇关于421.数组中两个数的最大异或值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!