# 1310. XOR Queries of a Subarray

You are given an array `arr` of positive integers. You are also given the array `queries` where `queries[i] = [lefti, righti]`.

For each query `i` compute the XOR of elements from `lefti` to `righti` (that is, `arr[lefti] XOR arr[lefti + 1] XOR ... XOR arr[righti]` ).

Return an array `answer` where `answer[i]` is the answer to the `ith` query.

Example 1:

``````Input: arr = [1,3,4,8], queries = [[0,1],[1,2],[0,3],[3,3]]
Output: [2,7,14,8]
Explanation:
The binary representation of the elements in the array are:
1 = 0001
3 = 0011
4 = 0100
8 = 1000
The XOR values for queries are:
[0,1] = 1 xor 3 = 2
[1,2] = 3 xor 4 = 7
[0,3] = 1 xor 3 xor 4 xor 8 = 14
[3,3] = 8
``````

Example 2:

``````Input: arr = [4,8,2,10], queries = [[2,3],[1,3],[0,0],[0,3]]
Output: [8,0,4,4]
``````

Constraints:

• `1 <= arr.length, queries.length <= 3 * 104`
• `1 <= arr[i] <= 109`
• `queries[i].length == 2`
• `0 <= lefti <= righti < arr.length`

``````class Solution {
public:
vector<int> xorQueries(vector<int>& arr, vector<vector<int>>& queries) {
int n = arr.size();
vector<int> res, xors(n + 1);
for (int i = 1; i <= n; ++i) {
xors[i] = xors[i - 1] ^ arr[i - 1];
}
for (auto &query : queries) {
res.push_back(xors[query[1] + 1] ^ xors[query[0]]);
}
return res;
}
};
``````

Github 同步地址:

https://github.com/grandyang/leetcode/issues/1310

https://leetcode.com/problems/xor-queries-of-a-subarray/

https://leetcode.com/problems/xor-queries-of-a-subarray/discuss/470702/C%2B%2B-Prefix-XORs

https://leetcode.com/problems/xor-queries-of-a-subarray/discuss/470787/JavaC%2B%2BPython-Straight-Forward-Solution

LeetCode All in One 题目讲解汇总(持续更新中…)

（欢迎加入博主的知识星球，博主将及时答疑解惑，并分享刷题经验与总结，快快加入吧～）

|

Venmo 打赏

—|—

 微信打赏 Venmo 打赏
（欢迎加入博主的知识星球，博主将及时答疑解惑，并分享刷题经验与总结，试运营期间前五十位可享受半价优惠～）

×

Help us with donation