Maximum XOR for Each Query

给一个数字maxbit和一个sorted array, 求返回一个array, 里面的数字是k个query的结果, k是一个数字, 他是数组中每个数字的xor后最大不超过2^maxbit的数的可能数字.

这个题主要先理解题目, 然后已知xor运算是互逆的, 所以先算出所有数的xor, 然后再往前逐个xor即可得到前边数字的xor的数字, 设这个数字为x. 其次, 假设x是3, maxbit是5. 3的二进制就是11, (2^5 -1)的二进制是1111. 因为后边是4位, 所以前边的3可以看做是0011, 那么问题转化成, 1111和0011的最大xor可能取值是多少, 就是1100(1111 xor 0011).

class Solution {
    public int[] getMaximumXor(int[] nums, int maximumBit) {
        int x = 0;
        for(int n : nums){
            x ^= n;
        }
        int[] res = new int[nums.length];
        for(int i = nums.length - 1; i >= 0; i--) {
            res[nums.length - i - 1] = (x ^ ((int)Math.pow(2, maximumBit) - 1));
            x ^= nums[i];
        }
        return res;
    }
}