@ninijia 在 Leetcode每日一题练习 ------ 1310. 子数组异或查询 中发帖
从Leetcode 每日一题练习继续讨论:
1310. 子数组异或查询
1310. XOR Queries of a Subarray
题解
本题可使用"前缀和". 考虑到每次计算query都是从query的lefti异或到righti. 之前提到过精准计算某一段的值可以用以该段段尾为结尾的前缀和减去该段段首为结尾的前缀和. 在这里同样如此, 要用到异或的特性, a^b^c的值再与a异或相当于b^c. 则可先计算出arr数组的全部元素的前缀"异或和"(即求到当前下标的子数组的全部异或后的结果). 在计算query时用到段尾下标的前缀"异或和"与到段首下标的前缀"异或和"异或即得中间部分的异或和.
注意求[0,1]的异或和是求0位和1位异或的结果, 是包含0位的, 而求前缀和时相当于从下标"-1"开始计算, 需要在前缀和数组前面补充一个值为0的前缀和表示"-1"的值, 这样求[0,1...