这道题用到了前缀和的思想
xor异或数组第i位表示原数组0-i异或的结果
假设arr = [1,3,4,8]
xor[0]=0;
xor[1] = xor[0] ^ arr[0] = 0 ^ 1
xor[2] = xor[1] ^ arr[1] = 0^1^3
xor[3] = xor[2]^arr[2] = 0^1^3^4;
xor[4] = xor[3] ^ arr[3] = 0^1^3^4^8
所以查询数组中,例如[0,1] = arr[0] ^ arr[1] = 1^3 = xor[0] ^ xor[2] ,第0位被抵消掉了
同理,[1,2] = arr[1]^arr[2] = 3^4 = xor[1] ^ xor[3] = (0^1) ^ (0^1^3^4),前面两位被抵消了
题目 解答 题目 解答
网友评论