前缀树思路
https://www.youtube.com/watch?v=wSgrc98d2lI
假设有5个数字,二进制如下:
- 00010
- 00101
- 01000
- 01010
- 11001
将它们存储到前缀树如下图。
每次,我们看向一个数字,从高位向低位查找,从所有选择中找到能与他组成最大异或结果的数。
如上图,我们先看向数字11001,尝试为他找到最佳搭配。
- 最高位是1,如果另一个数字高位是0,就能组成最大结果。而前缀树的根节点有0子节点,所以我们来到0。
- 第二位也是1,所以从子节点选择另一个0。
- 第三位是0,最佳搭配的第三位需要是1,于是我们走向1子节点。
- 以此类推,在查找前缀树时,优先选择最佳搭配的子节点,如果不行,才选另一个。
最后返回与最佳搭配的计算结果。