Skip to content

Commit 8fd1020

Browse files
committedDec 8, 2021
feat: add solutions to lc problem: No.0985
No.0985.Sum of Even Numbers After Queries
1 parent 116dea5 commit 8fd1020

File tree

7 files changed

+350
-92
lines changed

7 files changed

+350
-92
lines changed
 

‎solution/0900-0999/0985.Sum of Even Numbers After Queries/README.md

+126-2
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
<li><code>0 &lt;= queries[i][1] &lt; A.length</code></li>
4141
</ol>
4242

43-
4443
## 解法
4544

4645
<!-- 这里可写通用的实现逻辑 -->
@@ -52,15 +51,140 @@
5251
<!-- 这里可写当前语言的特殊实现逻辑 -->
5352

5453
```python
55-
54+
class Solution:
55+
def sumEvenAfterQueries(self, nums: List[int], queries: List[List[int]]) -> List[int]:
56+
ans = []
57+
s = sum(num for num in nums if num % 2 == 0)
58+
for v, i in queries:
59+
old = nums[i]
60+
nums[i] += v
61+
if nums[i] % 2 == 0 and old % 2 == 0:
62+
s += v
63+
elif nums[i] % 2 == 0 and old % 2 == 1:
64+
s += nums[i]
65+
elif old % 2 == 0:
66+
s -= old
67+
ans.append(s)
68+
return ans
5669
```
5770

5871
### **Java**
5972

6073
<!-- 这里可写当前语言的特殊实现逻辑 -->
6174

6275
```java
76+
class Solution {
77+
public int[] sumEvenAfterQueries(int[] nums, int[][] queries) {
78+
int s = 0;
79+
for (int num : nums) {
80+
if (num % 2 == 0) {
81+
s += num;
82+
}
83+
}
84+
int[] ans = new int[queries.length];
85+
int idx = 0;
86+
for (int[] q : queries) {
87+
int v = q[0], i = q[1];
88+
int old = nums[i];
89+
nums[i] += v;
90+
if (nums[i] % 2 == 0 && old % 2 == 0) {
91+
s += v;
92+
} else if (nums[i] % 2 == 0 && old % 2 != 0) {
93+
s += nums[i];
94+
} else if (old % 2 == 0) {
95+
s -= old;
96+
}
97+
ans[idx++] = s;
98+
}
99+
return ans;
100+
}
101+
}
102+
```
103+
104+
### **C++**
105+
106+
```cpp
107+
class Solution {
108+
public:
109+
vector<int> sumEvenAfterQueries(vector<int>& nums, vector<vector<int>>& queries) {
110+
int s = 0;
111+
for (int& num : nums)
112+
if (num % 2 == 0)
113+
s += num;
114+
vector<int> ans;
115+
for (auto& q : queries)
116+
{
117+
int v = q[0], i = q[1];
118+
int old = nums[i];
119+
nums[i] += v;
120+
if (nums[i] % 2 == 0 && old % 2 == 0) s += v;
121+
else if (nums[i] % 2 == 0 && old % 2 != 0) s += nums[i];
122+
else if (old % 2 == 0) s -= old;
123+
ans.push_back(s);
124+
}
125+
return ans;
126+
}
127+
};
128+
```
129+
130+
### **Go**
131+
132+
```go
133+
func sumEvenAfterQueries(nums []int, queries [][]int) []int {
134+
s := 0
135+
for _, num := range nums {
136+
if num%2 == 0 {
137+
s += num
138+
}
139+
}
140+
var ans []int
141+
for _, q := range queries {
142+
v, i := q[0], q[1]
143+
old := nums[i]
144+
nums[i] += v
145+
if nums[i]%2 == 0 && old%2 == 0 {
146+
s += v
147+
} else if nums[i]%2 == 0 && old%2 != 0 {
148+
s += nums[i]
149+
} else if old%2 == 0 {
150+
s -= old
151+
}
152+
ans = append(ans, s)
153+
}
154+
return ans
155+
}
156+
```
63157

158+
### **JavaScript**
159+
160+
```js
161+
/**
162+
* @param {number[]} nums
163+
* @param {number[][]} queries
164+
* @return {number[]}
165+
*/
166+
var sumEvenAfterQueries = function(nums, queries) {
167+
let s = 0;
168+
for (let num of nums) {
169+
if (num % 2 == 0) {
170+
s += num;
171+
}
172+
}
173+
let ans = [];
174+
for (let [v, i] of queries) {
175+
const old = nums[i];
176+
nums[i] += v;
177+
if (nums[i] % 2 == 0 && old % 2 == 0) {
178+
s += v;
179+
} else if (nums[i] % 2 == 0 && old % 2 != 0) {
180+
s += nums[i];
181+
} else if (old % 2 == 0) {
182+
s -= old;
183+
}
184+
ans.push(s);
185+
}
186+
return ans;
187+
};
64188
```
65189

66190
### **...**

‎solution/0900-0999/0985.Sum of Even Numbers After Queries/README_EN.md

+126-21
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,16 @@
66

77
<p>We have an array <code>A</code> of integers, and an array <code>queries</code>&nbsp;of queries.</p>
88

9-
10-
119
<p>For the <code>i</code>-th&nbsp;query <code>val =&nbsp;queries[i][0], index&nbsp;= queries[i][1]</code>, we add <font face="monospace">val</font>&nbsp;to <code>A[index]</code>.&nbsp; Then, the answer to the <code>i</code>-th query is the sum of the even values of <code>A</code>.</p>
1210

13-
14-
1511
<p><em>(Here, the given <code>index = queries[i][1]</code> is a 0-based index, and each query permanently modifies the array <code>A</code>.)</em></p>
1612

17-
18-
1913
<p>Return the answer to all queries.&nbsp; Your <code>answer</code> array should have&nbsp;<code>answer[i]</code>&nbsp;as&nbsp;the answer to the <code>i</code>-th query.</p>
2014

21-
22-
2315
<p>&nbsp;</p>
2416

25-
26-
2717
<p><strong>Example 1:</strong></p>
2818

29-
30-
3119
<pre>
3220

3321
<strong>Input: </strong>A = <span id="example-input-1-1">[1,2,3,4]</span>, queries = <span id="example-input-1-2">[[1,0],[-3,1],[-4,0],[2,3]]</span>
@@ -48,16 +36,10 @@ After adding 2 to A[3], the array is [-2,-1,3,6], and the sum of even values is
4836

4937
</pre>
5038

51-
52-
5339
<p>&nbsp;</p>
5440

55-
56-
5741
<p><strong>Note:</strong></p>
5842

59-
60-
6143
<ol>
6244
<li><code>1 &lt;= A.length &lt;= 10000</code></li>
6345
<li><code>-10000 &lt;= A[i] &lt;= 10000</code></li>
@@ -66,22 +48,145 @@ After adding 2 to A[3], the array is [-2,-1,3,6], and the sum of even values is
6648
<li><code>0 &lt;= queries[i][1] &lt; A.length</code></li>
6749
</ol>
6850

69-
70-
7151
## Solutions
7252

7353
<!-- tabs:start -->
7454

7555
### **Python3**
7656

7757
```python
78-
58+
class Solution:
59+
def sumEvenAfterQueries(self, nums: List[int], queries: List[List[int]]) -> List[int]:
60+
ans = []
61+
s = sum(num for num in nums if num % 2 == 0)
62+
for v, i in queries:
63+
old = nums[i]
64+
nums[i] += v
65+
if nums[i] % 2 == 0 and old % 2 == 0:
66+
s += v
67+
elif nums[i] % 2 == 0 and old % 2 == 1:
68+
s += nums[i]
69+
elif old % 2 == 0:
70+
s -= old
71+
ans.append(s)
72+
return ans
7973
```
8074

8175
### **Java**
8276

8377
```java
78+
class Solution {
79+
public int[] sumEvenAfterQueries(int[] nums, int[][] queries) {
80+
int s = 0;
81+
for (int num : nums) {
82+
if (num % 2 == 0) {
83+
s += num;
84+
}
85+
}
86+
int[] ans = new int[queries.length];
87+
int idx = 0;
88+
for (int[] q : queries) {
89+
int v = q[0], i = q[1];
90+
int old = nums[i];
91+
nums[i] += v;
92+
if (nums[i] % 2 == 0 && old % 2 == 0) {
93+
s += v;
94+
} else if (nums[i] % 2 == 0 && old % 2 != 0) {
95+
s += nums[i];
96+
} else if (old % 2 == 0) {
97+
s -= old;
98+
}
99+
ans[idx++] = s;
100+
}
101+
return ans;
102+
}
103+
}
104+
```
105+
106+
### **C++**
107+
108+
```cpp
109+
class Solution {
110+
public:
111+
vector<int> sumEvenAfterQueries(vector<int>& nums, vector<vector<int>>& queries) {
112+
int s = 0;
113+
for (int& num : nums)
114+
if (num % 2 == 0)
115+
s += num;
116+
vector<int> ans;
117+
for (auto& q : queries)
118+
{
119+
int v = q[0], i = q[1];
120+
int old = nums[i];
121+
nums[i] += v;
122+
if (nums[i] % 2 == 0 && old % 2 == 0) s += v;
123+
else if (nums[i] % 2 == 0 && old % 2 != 0) s += nums[i];
124+
else if (old % 2 == 0) s -= old;
125+
ans.push_back(s);
126+
}
127+
return ans;
128+
}
129+
};
130+
```
131+
132+
### **Go**
133+
134+
```go
135+
func sumEvenAfterQueries(nums []int, queries [][]int) []int {
136+
s := 0
137+
for _, num := range nums {
138+
if num%2 == 0 {
139+
s += num
140+
}
141+
}
142+
var ans []int
143+
for _, q := range queries {
144+
v, i := q[0], q[1]
145+
old := nums[i]
146+
nums[i] += v
147+
if nums[i]%2 == 0 && old%2 == 0 {
148+
s += v
149+
} else if nums[i]%2 == 0 && old%2 != 0 {
150+
s += nums[i]
151+
} else if old%2 == 0 {
152+
s -= old
153+
}
154+
ans = append(ans, s)
155+
}
156+
return ans
157+
}
158+
```
84159

160+
### **JavaScript**
161+
162+
```js
163+
/**
164+
* @param {number[]} nums
165+
* @param {number[][]} queries
166+
* @return {number[]}
167+
*/
168+
var sumEvenAfterQueries = function(nums, queries) {
169+
let s = 0;
170+
for (let num of nums) {
171+
if (num % 2 == 0) {
172+
s += num;
173+
}
174+
}
175+
let ans = [];
176+
for (let [v, i] of queries) {
177+
const old = nums[i];
178+
nums[i] += v;
179+
if (nums[i] % 2 == 0 && old % 2 == 0) {
180+
s += v;
181+
} else if (nums[i] % 2 == 0 && old % 2 != 0) {
182+
s += nums[i];
183+
} else if (old % 2 == 0) {
184+
s -= old;
185+
}
186+
ans.push(s);
187+
}
188+
return ans;
189+
};
85190
```
86191

87192
### **...**
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,21 @@
11
class Solution {
22
public:
3-
vector<int> sumEvenAfterQueries(vector<int>& A, vector<vector<int>>& queries) {
4-
3+
vector<int> sumEvenAfterQueries(vector<int>& nums, vector<vector<int>>& queries) {
4+
int s = 0;
5+
for (int& num : nums)
6+
if (num % 2 == 0)
7+
s += num;
58
vector<int> ans;
6-
7-
int Sum = 0;
8-
for(int i = 0; i < A.size(); i++){
9-
if( ! ( A[i] & 1 ) )
10-
Sum += A[i];
9+
for (auto& q : queries)
10+
{
11+
int v = q[0], i = q[1];
12+
int old = nums[i];
13+
nums[i] += v;
14+
if (nums[i] % 2 == 0 && old % 2 == 0) s += v;
15+
else if (nums[i] % 2 == 0 && old % 2 != 0) s += nums[i];
16+
else if (old % 2 == 0) s -= old;
17+
ans.push_back(s);
1118
}
12-
13-
int old;
14-
15-
for(int i = 0; i < queries.size(); i++){
16-
17-
old = A[queries[i][1]];
18-
A[queries[i][1]] = A[queries[i][1]] + queries[i][0];
19-
20-
if( (old % 2 != 0) && (A[queries[i][1]] % 2 == 0) )
21-
Sum += A[queries[i][1]];
22-
else if( (old % 2 == 0) && (A[queries[i][1]] % 2 == 0) )
23-
Sum = Sum - old + A[queries[i][1]];
24-
else if( (old % 2 == 0) && (A[queries[i][1]] % 2 != 0) )
25-
Sum = Sum - old;
26-
27-
ans.push_back(Sum);
28-
29-
}
30-
3119
return ans;
3220
}
33-
};
21+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
func sumEvenAfterQueries(nums []int, queries [][]int) []int {
2+
s := 0
3+
for _, num := range nums {
4+
if num%2 == 0 {
5+
s += num
6+
}
7+
}
8+
var ans []int
9+
for _, q := range queries {
10+
v, i := q[0], q[1]
11+
old := nums[i]
12+
nums[i] += v
13+
if nums[i]%2 == 0 && old%2 == 0 {
14+
s += v
15+
} else if nums[i]%2 == 0 && old%2 != 0 {
16+
s += nums[i]
17+
} else if old%2 == 0 {
18+
s -= old
19+
}
20+
ans = append(ans, s)
21+
}
22+
return ans
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
public int[] sumEvenAfterQueries(int[] nums, int[][] queries) {
3+
int s = 0;
4+
for (int num : nums) {
5+
if (num % 2 == 0) {
6+
s += num;
7+
}
8+
}
9+
int[] ans = new int[queries.length];
10+
int idx = 0;
11+
for (int[] q : queries) {
12+
int v = q[0], i = q[1];
13+
int old = nums[i];
14+
nums[i] += v;
15+
if (nums[i] % 2 == 0 && old % 2 == 0) {
16+
s += v;
17+
} else if (nums[i] % 2 == 0 && old % 2 != 0) {
18+
s += nums[i];
19+
} else if (old % 2 == 0) {
20+
s -= old;
21+
}
22+
ans[idx++] = s;
23+
}
24+
return ans;
25+
}
26+
}
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,27 @@
11
/**
2-
* @param {number[]} A
2+
* @param {number[]} nums
33
* @param {number[][]} queries
44
* @return {number[]}
55
*/
6-
7-
/**
8-
* Author: Mcnwork2018
9-
*/
10-
11-
var sumEvenAfterQueries = function (A, queries) {
12-
const len = A.length; // A数组的长度
13-
const qlen = queries.length; // queries数组的长度
14-
let answer = [];
15-
let S = 0;
16-
for (let i = 0; i < len; i++) {
17-
if (A[i] % 2 == 0) {
18-
S += A[i];
19-
}
6+
var sumEvenAfterQueries = function(nums, queries) {
7+
let s = 0;
8+
for (let num of nums) {
9+
if (num % 2 == 0) {
10+
s += num;
11+
}
2012
}
21-
for (let j = 0; j < qlen; j++) {
22-
let val = queries[j][0];
23-
let index = queries[j][1];
24-
if (A[index] % 2 == 0) {
25-
S -= A[index];
26-
}
27-
A[index] += val;
28-
if (A[index] % 2 == 0) {
29-
S += A[index];
30-
}
31-
answer.push(S);
13+
let ans = [];
14+
for (let [v, i] of queries) {
15+
const old = nums[i];
16+
nums[i] += v;
17+
if (nums[i] % 2 == 0 && old % 2 == 0) {
18+
s += v;
19+
} else if (nums[i] % 2 == 0 && old % 2 != 0) {
20+
s += nums[i];
21+
} else if (old % 2 == 0) {
22+
s -= old;
23+
}
24+
ans.push(s);
3225
}
33-
return answer;
34-
};
26+
return ans;
27+
};
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
class Solution:
2-
def sumEvenAfterQueries(self, A: 'List[int]', queries: 'List[List[int]]') -> 'List[int]':
3-
base = sum(filter(lambda x: x % 2 == 0, A))
2+
def sumEvenAfterQueries(self, nums: List[int], queries: List[List[int]]) -> List[int]:
43
ans = []
5-
for val, index in queries:
6-
if A[index] % 2 == 0:
7-
base -= A[index]
8-
A[index] += val
9-
if A[index] % 2 == 0:
10-
base += A[index]
11-
else:
12-
A[index] += val
13-
if A[index] % 2 == 0:
14-
base += A[index]
15-
ans.append(base)
16-
return ans
4+
s = sum(num for num in nums if num % 2 == 0)
5+
for v, i in queries:
6+
old = nums[i]
7+
nums[i] += v
8+
if nums[i] % 2 == 0 and old % 2 == 0:
9+
s += v
10+
elif nums[i] % 2 == 0 and old % 2 == 1:
11+
s += nums[i]
12+
elif old % 2 == 0:
13+
s -= old
14+
ans.append(s)
15+
return ans

0 commit comments

Comments
 (0)
Please sign in to comment.