題目: XOR Queries of a Subarray
給你一個整數vector:arr,並給你一個2D vector: queries,你需要回傳一個整數vector
ans,其中ans[i]代表為arr從quieries[i][0]的位置一路xor到queries[i][1]的位置的值
,若queries[i]的兩個值相等是回傳arr[queries[i][0]]。
思路:
我們可以先做一個prefix xor的vector,其中prefix_xor[i]代表arr[0]一路xor到arr[i]
的值,任意的[i to j]的xor值(i!=0)就是prefix_xor[j] xor prefix_xor[i-1]
vector<int> xorQueries(vector<int>& arr, vector<vector<int>>& queries) {
vector<int> pre_ans(arr.size(),arr[0]);
for(int i=1;i<arr.size();++i){
pre_ans[i]=pre_ans[i-1]^arr[i];
}
vector<int> ans(queries.size(),0);
for(int i=0;i<queries.size();++i){
if(queries[i][0]==queries[i][1]){
ans[i]=arr[queries[i][0]];
}
else if(queries[i][0]==0){
ans[i]=pre_ans[queries[i][1]];
}
else{
ans[i]=pre_ans[queries[i][0]-1]^pre_ans[queries[i][1]];
}
}
return ans;
}