原题
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;
}
}

本文介绍了如何使用前缀和技巧高效解决LeetCode上的异或查询子数组问题,通过两个代码实现展示了暴力求解和优化方法,重点在于理解异或运算的性质并应用到算法设计中。
397

被折叠的 条评论
为什么被折叠?



