个人题解:前缀和求异或
题目:
标签:
- 位操作。
思路:
- 这道题难就难在,边界条件。
- 一开始边界条件判断错,很有可能会慌乱。这在面试中也很容易造成问题。
- 边界条件就是,需要在最前面添加一个0,来避免 left 为 0 的情况。右边界是闭的,所以右边界要 + 1。认清这一点就好办了。
题解:
class Solution {
public int[] xorQueries(int[] arr, int[][] queries) {
int length = arr.length;
int[] dp = new int[length + 1];
dp[0] = 0;
for (int i = 1; i <= length; ++i) {
dp[i] = dp[i - 1] ^ arr[i - 1];
}
int length_q = queries.length;
int[] res = new int[length_q];
for (int i = 0; i < length_q; ++i) {
int left = queries[i][0], right = queries[i][1] + 1;
res[i] = dp[right] ^ dp[left];
}
return res;
}
}