原题
https://leetcode-cn.com/problems/xor-queries-of-a-subarray/
思路
1. 最直接的办法,暴力求解
2. 前缀和,经过前几天的每日一题,都是异或运算,已经掌握了其特征
异或的特点:相同的为0,不同的为1
题解
class Solution {
// 暴力求解
public int[] xorQueries(int[] arr, int[][] queries) {
int len = queries.length;
int[] res = new int[len];
for (int i = 0; i < len; i++) {
int left = queries[i][0];
int right = queries[i][1];
int temp = 0;
for (int j = left; j <= right; j++) {
temp ^= arr[j];
}
res[i] = temp;
}
return res;
}
}
class Solution {
// 前缀和
public int[] xorQueries(int[] arr, int[][] queries) {
int m = arr.length;
int[] sum = new int[m+1];
for (int i = 0; i < m; i++) {
sum[i+1] = sum[i] ^ arr[i];
}
int n = queries.length;
int[] res = new int[n];
for (int i = 0; i < n; i++) {
int left = queries[i][0];
int right = queries[i][1];
res[i] = sum[right+1] ^ sum[left];
}
return res;
}
}