Re: [闲聊] 每日leetcode

楼主: enmeitiryous (enmeitiryous)   2024-09-13 08:44:37
题目: 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;
}

Links booklink

Contact Us: admin [ a t ] ucptt.com