0. 题目
性质1:
a ^ a = 0
0 ^ a = a
性质2:
a ^ b = c (1)
a ^ c = b (2)
b ^ c = a (3)
(1)、(2)、(3)等价。
(1) ^ b 得到 a ^ b ^ b = c ^ b 得到 a = c ^ b。
我们只用关心这个 最大的异或值需要满足什么性质 ,进而推出这个最大值是什么,而不必关心这个异或值是由哪两个数得来的。
1. 二进制下,越高位上越能出现“1”。
1. 哈希表 o(nlogC) o(n)
c是二进制位数的上限。对于题目限制是31位。从0开始是遍历0~31。
思路:
1. 从最高位k=30遍历,直到遍历到最低位 0。
2. 每次遍历k,x = k位之前的最大异或值。
a. 遍历一遍num,获得set: seen.
b. 遍历一遍num,判断 该位置的max_value ^ num[:k&