#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、取最大值。