題目: 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; } -- ※ 發信站: 批踢踢實業坊(web-ptt.tw), 來自: 36.227.201.152 (臺灣) ※ 文章網址: https://web-ptt.tw/Marginalman/M.1726188279.A.62F