设计师 英文网站,网络营销工具,网站单页设计,网站开发怎么用自己的电脑思路#xff1a;从最高位向低位构造#xff0c;对每一位利用哈希表寻找是否存在可使此位为1的数 第一轮找1#xff1a;清空哈希表#xff0c;1#xff0c;2存1#xff0c;到3发现1^01#xff0c;res|13 第二轮找11#xff1a;清空哈希表#xff0c;1存10从最高位向低位构造对每一位利用哈希表寻找是否存在可使此位为1的数 第一轮找1清空哈希表12存1到3发现1^01res|13 第二轮找11清空哈希表1存102存103发现11^0110res|13 第三轮找111清空哈希表1存1012存1013存011…找不到能构造出111的 第四轮找1101清空哈希表1存10102存1011到3发现1101^01111010res|(10)
class Solution {
public:int findMaximumXOR(vectorint nums) {int res0,mask0;unordered_setintset;for(int i31;i0;i--){set.clear();mask|1i;int tmpres|(1i);for(int num:nums){int xnummask;if(set.contains(tmp^x)){restmp;break;}set.insert(x);}}return res;}
};在前边基础上加上限制条件即可对任意强数对满足|x-y|min(x,y)假设x比y大那么2*yx即可那么只需要排序后利用unordered_map记录之前的值比较一下即可
class Solution {
public:int maximumStrongPairXor(vectorint nums) {sort(nums.begin(),nums.end());int res0,mask0;unordered_mapint,intmap;for(int i31;i0;i--){map.clear();mask|1i;int tmpres|(1i);for(int j:nums){int xmaskj;if(map.count(tmp^x)map[tmp^x]*2j){restmp;break;}map[x]j;}}return res;}
};