所有num与运算的结果为x,说明x二进制下为1的位置在所有num中也全部为1。
那其他位置呢?x二进制下为0的位置呢?当然是可1可0。
由于想要nums数组中最大的那个数尽可能小,所以在填充x非零位置的时间,用从0到 n − 1 n-1 n−1的二进制填充就好了。如许得到的nums数组即为最优。 总之:将 n − 1 n-1 n−1的二进制插入到 x x x中为0的位置即可。
假如 x = 5 ( 101 ) x=5(101) x=5(101),那么x中为0的位有:第2位、第4位、第5位、第6位、…。
假设 n = 3 n=3 n=3,那么 0 0 0到 n − 1 n-1 n−1的2进制为 00 00 00、 01 01 01、 10 10 10。
将这些数填充到x中为0的位置,即可得到nums数组:0101、0111、1101(加粗的位置是x中为0的位置,填入了0到2这3个数)。
因此 n u m s nums nums中最大的数为:将 n − 1 n-1 n−1的二进制填入 x x x二进制下为 0 0 0的位置。
详细做法