贪心 + 位运算
题目描述
首先,我们需要了解到的一点是,由于这个a序列是递增的,所以当我们的x取到每一位都是1时,所有a[i] & x 都保持不变,符合题意。
而我们需要找到一个最小的满足这个性质的x,由此我们引出贪心思路,即我们从最高位开始判断这一位是否要取1, 而在可以取0的情况下一定取0。
而经过一些实验,我们还可以发现一些位运算的性质
即如果假设我们的答案x 有 i 位数字(01序列),那么如果第i - 1位取1不能使得所有的a序列满足 a[i] & x 递增, 那么我们从 0 - i - 1位都取1也无法使得a序列满足这个性质。
换句话说,也就是此时必须要在第i位·上取1了。
因此我们只需要枚举一下此题的数据范围的位数i = 30; i >= 0; i --, 再依次判断j = i - 1; j >= 0; j --位上取1是否可以满足性质,如果可以满足,则当前答案的第j位就取1,再去验证一遍, 如果真的符合,则将最终答案更新
如果不能满足则答案的第i位取1。
本人是算法新手,此题解来源于各个大佬发布的讨论或题解,我将自己的理解 写出来以便与我相同的新手观看。
如有谬误,请大家多多指出,探讨。 链接详细代码可参照

京公网安备 11010502036488号