Skip to content

Commit 649482a

Browse files
committed
feat: add solutions to lc problem: No.1310
No.1310.XOR Queries of a Subarray
1 parent 8929cae commit 649482a

File tree

7 files changed

+152
-45
lines changed

7 files changed

+152
-45
lines changed

solution/1300-1399/1310.XOR Queries of a Subarray/README.md

Lines changed: 54 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@
6666
```python
6767
class Solution:
6868
def xorQueries(self, arr: List[int], queries: List[List[int]]) -> List[int]:
69-
pre_xor = [0] * (len(arr) + 1)
70-
for i in range(1, len(arr) + 1):
71-
pre_xor[i] = pre_xor[i - 1] ^ arr[i - 1]
72-
return [pre_xor[l] ^ pre_xor[r + 1] for l, r in queries]
69+
xors = [0]
70+
for v in arr:
71+
xors.append(xors[-1] ^ v)
72+
return [xors[l] ^ xors[r + 1] for l, r in queries]
7373
```
7474

7575
### **Java**
@@ -79,16 +79,19 @@ class Solution:
7979
```java
8080
class Solution {
8181
public int[] xorQueries(int[] arr, int[][] queries) {
82-
int[] preXor = new int[arr.length + 1];
83-
for (int i = 1; i <= arr.length; ++i) {
84-
preXor[i] = preXor[i - 1] ^ arr[i - 1];
82+
int n = arr.length;
83+
int[] xors = new int[n + 1];
84+
for (int i = 0; i < n; ++i) {
85+
xors[i + 1] = xors[i] ^ arr[i];
8586
}
86-
int[] res = new int[queries.length];
87-
for (int i = 0; i < queries.length; ++i) {
88-
int l = queries[i][0], r = queries[i][1];
89-
res[i] = preXor[l] ^ preXor[r + 1];
87+
int m = queries.length;
88+
int[] ans = new int[m];
89+
for (int i = 0; i < m; ++i) {
90+
int l = queries[i][0];
91+
int r = queries[i][1];
92+
ans[i] = xors[l] ^ xors[r + 1];
9093
}
91-
return res;
94+
return ans;
9295
}
9396
}
9497
```
@@ -108,14 +111,50 @@ var xorQueries = function (arr, queries) {
108111
xors[i + 1] = xors[i] ^ arr[i];
109112
}
110113
let res = [];
111-
for (let query of queries) {
112-
let [start, end] = query;
113-
res.push(xors[start] ^ xors[end + 1]);
114+
for (let [l, r] of queries) {
115+
res.push(xors[l] ^ xors[r + 1]);
114116
}
115117
return res;
116118
};
117119
```
118120

121+
### **C++**
122+
123+
```cpp
124+
class Solution {
125+
public:
126+
vector<int> xorQueries(vector<int>& arr, vector<vector<int>>& queries) {
127+
int n = arr.size();
128+
vector<int> xors(n + 1);
129+
for (int i = 0; i < n; ++i) xors[i + 1] = xors[i] ^ arr[i];
130+
vector<int> ans;
131+
for (auto& q : queries)
132+
{
133+
int l = q[0], r = q[1];
134+
ans.push_back(xors[l] ^ xors[r + 1]);
135+
}
136+
return ans;
137+
}
138+
};
139+
```
140+
141+
### **Go**
142+
143+
```go
144+
func xorQueries(arr []int, queries [][]int) []int {
145+
xors := make([]int, len(arr)+1)
146+
for i, v := range arr {
147+
xors[i+1] = xors[i] ^ v
148+
}
149+
var ans []int
150+
for _, q := range queries {
151+
l, r := q[0], q[1]
152+
ans = append(ans, xors[l]^xors[r+1])
153+
}
154+
return ans
155+
}
156+
```
157+
119158
### **...**
120159

121160
```

solution/1300-1399/1310.XOR Queries of a Subarray/README_EN.md

Lines changed: 54 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -71,27 +71,30 @@ The XOR values for queries are:
7171
```python
7272
class Solution:
7373
def xorQueries(self, arr: List[int], queries: List[List[int]]) -> List[int]:
74-
pre_xor = [0] * (len(arr) + 1)
75-
for i in range(1, len(arr) + 1):
76-
pre_xor[i] = pre_xor[i - 1] ^ arr[i - 1]
77-
return [pre_xor[l] ^ pre_xor[r + 1] for l, r in queries]
74+
xors = [0]
75+
for v in arr:
76+
xors.append(xors[-1] ^ v)
77+
return [xors[l] ^ xors[r + 1] for l, r in queries]
7878
```
7979

8080
### **Java**
8181

8282
```java
8383
class Solution {
8484
public int[] xorQueries(int[] arr, int[][] queries) {
85-
int[] preXor = new int[arr.length + 1];
86-
for (int i = 1; i <= arr.length; ++i) {
87-
preXor[i] = preXor[i - 1] ^ arr[i - 1];
85+
int n = arr.length;
86+
int[] xors = new int[n + 1];
87+
for (int i = 0; i < n; ++i) {
88+
xors[i + 1] = xors[i] ^ arr[i];
8889
}
89-
int[] res = new int[queries.length];
90-
for (int i = 0; i < queries.length; ++i) {
91-
int l = queries[i][0], r = queries[i][1];
92-
res[i] = preXor[l] ^ preXor[r + 1];
90+
int m = queries.length;
91+
int[] ans = new int[m];
92+
for (int i = 0; i < m; ++i) {
93+
int l = queries[i][0];
94+
int r = queries[i][1];
95+
ans[i] = xors[l] ^ xors[r + 1];
9396
}
94-
return res;
97+
return ans;
9598
}
9699
}
97100
```
@@ -111,14 +114,50 @@ var xorQueries = function (arr, queries) {
111114
xors[i + 1] = xors[i] ^ arr[i];
112115
}
113116
let res = [];
114-
for (let query of queries) {
115-
let [start, end] = query;
116-
res.push(xors[start] ^ xors[end + 1]);
117+
for (let [l, r] of queries) {
118+
res.push(xors[l] ^ xors[r + 1]);
117119
}
118120
return res;
119121
};
120122
```
121123

124+
### **C++**
125+
126+
```cpp
127+
class Solution {
128+
public:
129+
vector<int> xorQueries(vector<int>& arr, vector<vector<int>>& queries) {
130+
int n = arr.size();
131+
vector<int> xors(n + 1);
132+
for (int i = 0; i < n; ++i) xors[i + 1] = xors[i] ^ arr[i];
133+
vector<int> ans;
134+
for (auto& q : queries)
135+
{
136+
int l = q[0], r = q[1];
137+
ans.push_back(xors[l] ^ xors[r + 1]);
138+
}
139+
return ans;
140+
}
141+
};
142+
```
143+
144+
### **Go**
145+
146+
```go
147+
func xorQueries(arr []int, queries [][]int) []int {
148+
xors := make([]int, len(arr)+1)
149+
for i, v := range arr {
150+
xors[i+1] = xors[i] ^ v
151+
}
152+
var ans []int
153+
for _, q := range queries {
154+
l, r := q[0], q[1]
155+
ans = append(ans, xors[l]^xors[r+1])
156+
}
157+
return ans
158+
}
159+
```
160+
122161
### **...**
123162

124163
```
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public:
3+
vector<int> xorQueries(vector<int>& arr, vector<vector<int>>& queries) {
4+
int n = arr.size();
5+
vector<int> xors(n + 1);
6+
for (int i = 0; i < n; ++i) xors[i + 1] = xors[i] ^ arr[i];
7+
vector<int> ans;
8+
for (auto& q : queries)
9+
{
10+
int l = q[0], r = q[1];
11+
ans.push_back(xors[l] ^ xors[r + 1]);
12+
}
13+
return ans;
14+
}
15+
};
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
func xorQueries(arr []int, queries [][]int) []int {
2+
xors := make([]int, len(arr)+1)
3+
for i, v := range arr {
4+
xors[i+1] = xors[i] ^ v
5+
}
6+
var ans []int
7+
for _, q := range queries {
8+
l, r := q[0], q[1]
9+
ans = append(ans, xors[l]^xors[r+1])
10+
}
11+
return ans
12+
}
Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
class Solution {
22
public int[] xorQueries(int[] arr, int[][] queries) {
3-
int[] preXor = new int[arr.length + 1];
4-
for (int i = 1; i <= arr.length; ++i) {
5-
preXor[i] = preXor[i - 1] ^ arr[i - 1];
3+
int n = arr.length;
4+
int[] xors = new int[n + 1];
5+
for (int i = 0; i < n; ++i) {
6+
xors[i + 1] = xors[i] ^ arr[i];
67
}
7-
int[] res = new int[queries.length];
8-
for (int i = 0; i < queries.length; ++i) {
9-
int l = queries[i][0], r = queries[i][1];
10-
res[i] = preXor[l] ^ preXor[r + 1];
8+
int m = queries.length;
9+
int[] ans = new int[m];
10+
for (int i = 0; i < m; ++i) {
11+
int l = queries[i][0];
12+
int r = queries[i][1];
13+
ans[i] = xors[l] ^ xors[r + 1];
1114
}
12-
return res;
15+
return ans;
1316
}
1417
}

solution/1300-1399/1310.XOR Queries of a Subarray/Solution.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,8 @@ var xorQueries = function (arr, queries) {
1010
xors[i + 1] = xors[i] ^ arr[i];
1111
}
1212
let res = [];
13-
for (let query of queries) {
14-
let [start, end] = query;
15-
res.push(xors[start] ^ xors[end + 1]);
13+
for (let [l, r] of queries) {
14+
res.push(xors[l] ^ xors[r + 1]);
1615
}
1716
return res;
1817
};
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
class Solution:
22
def xorQueries(self, arr: List[int], queries: List[List[int]]) -> List[int]:
3-
pre_xor = [0] * (len(arr) + 1)
4-
for i in range(1, len(arr) + 1):
5-
pre_xor[i] = pre_xor[i - 1] ^ arr[i - 1]
6-
return [pre_xor[l] ^ pre_xor[r + 1] for l, r in queries]
3+
xors = [0]
4+
for v in arr:
5+
xors.append(xors[-1] ^ v)
6+
return [xors[l] ^ xors[r + 1] for l, r in queries]

0 commit comments

Comments
 (0)