Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 8fd1020

Browse files
committed
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‎

Lines changed: 126 additions & 2 deletions
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‎

Lines changed: 126 additions & 21 deletions
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
### **...**
Lines changed: 15 additions & 27 deletions
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+
};

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /