#865. 最大异或对

最大异或对

题目描述

给定 N 个整数 A1,A2,...,AN 中选出两个进行异或计算,得到的结果最大是多少?

输入格式

第一行一个整数 N,第二行 N 个整数A1,A2,...,AN。

输出格式

一个整数表示答案。

样例

输入样例 1

3
1 2 3

输出样例 1

3

输入样例 2

2
0 2147483647

输出样例 2

2147483647

输入样例 3

4
5 5 5 5

输出样例 3

0

提示

数据范围:对于所有测试数据,1≤N≤10^5,保证 0≤Ai <2^31。

思路:两个数进行按位异或运算,相同为 0,不相同为 1。 字典树法 1、每一个数字 Ai 看做32位二进制的 01 字符串插入字典树 2、再依次遍历整棵字典树查找 Ai,选路径时尽量选与当前0-1相反的方向(不存在相反方向再选相同方向),这样经过的0-1节点组成的数就是与Ai异或运算结果最大的Aj。 3、取最大值。