Maximum Xor of Two numbers in an Array

这题真的是对mask的理解升华了

还有一个要注意的是xor的意义。我一直觉得做一个operation需要两个数,要save一个之前的,再apply到当前的数。

但是这题不用。

利用了异或的”自反性“: a ^ b = c,而a ^ b ^ b = a, 则 c ^ b = a

太牛逼了。。。。


有几个important things I was missing.

1. HashSet每轮declare一次。

2.我们为什么从左到右要这么做。

首先我们的temp是从left most significant bit开始设置的。也就是一开始为100000000000

第二次也许是01000000000 , 也有可能是11000000000[如果上一轮 set里存在两个数的first bit不一样的话]。

越多differ的bit between two numbers, 越多的1由于xor。那么如果这些1出现在left side,结果会越大。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容