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 f65ceab

Browse files
feat: add solutions to lc problem: No.0985 (#4131)
No.0985.Sum of Even Numbers After Queries
1 parent aa1a162 commit f65ceab

File tree

6 files changed

+156
-44
lines changed

6 files changed

+156
-44
lines changed

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

Lines changed: 55 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,11 @@ tags:
5959

6060
### 方法一:模拟
6161

62-
我们用一个变量 $s$ 记录数组 $nums$ 中所有偶数的和。
62+
我们用一个整型变量 $\textit{s}$ 记录数组 $\textit{nums}$ 中所有偶数的和,初始时 $\textit{s}$ 为数组 $\textit{nums}$ 中所有偶数的和。
6363

64-
对于每次查询 $(v, i)$:
64+
对于每次查询 $(v, i)$,我们首先判断 $\textit{nums}[i]$ 是否为偶数,若 $\textit{nums}[i]$ 为偶数,则将 $\textit{s}$ 减去 $\textit{nums}[i]$;然后将 $\textit{nums}[i]$ 加上 $v$;若 $\textit{nums}[i]$ 为偶数,则将 $\textit{s}$ 加上 $\textit{nums}[i],ドル然后将 $\textit{s}$ 加入答案数组。
6565

66-
我们先判断 $nums[i]$ 是否为偶数,若 $nums[i]$ 为偶数,则将 $s$ 减去 $nums[i]$;然后将 $nums[i]$ 加上 $v$;
67-
68-
若 $nums[i]$ 为偶数,则将 $s$ 加上 $nums[i],ドル然后将 $s$ 加入答案数组。
69-
70-
时间复杂度 $O(n + m),ドル其中 $n$ 和 $m$ 分别为数组 $nums$ 和 $queries$ 的长度。忽略答案数组的空间消耗,空间复杂度 $O(1)$。
66+
时间复杂度 $O(n + m),ドル其中 $n$ 和 $m$ 分别为数组 $\textit{nums}$ 和 $\textit{queries}$ 的长度。忽略答案数组的空间消耗,空间复杂度 $O(1)$。
7167

7268
<!-- tabs:start -->
7369

@@ -178,12 +174,7 @@ func sumEvenAfterQueries(nums []int, queries [][]int) (ans []int) {
178174

179175
```ts
180176
function sumEvenAfterQueries(nums: number[], queries: number[][]): number[] {
181-
let s = 0;
182-
for (const x of nums) {
183-
if (x % 2 === 0) {
184-
s += x;
185-
}
186-
}
177+
let s = nums.reduce((acc, x) => acc + (x % 2 === 0 ? x : 0), 0);
187178
const ans: number[] = [];
188179
for (const [v, i] of queries) {
189180
if (nums[i] % 2 === 0) {
@@ -199,6 +190,31 @@ function sumEvenAfterQueries(nums: number[], queries: number[][]): number[] {
199190
}
200191
```
201192

193+
#### Rust
194+
195+
```rust
196+
impl Solution {
197+
pub fn sum_even_after_queries(mut nums: Vec<i32>, queries: Vec<Vec<i32>>) -> Vec<i32> {
198+
let mut s: i32 = nums.iter().filter(|&x| x % 2 == 0).sum();
199+
let mut ans = Vec::with_capacity(queries.len());
200+
201+
for query in queries {
202+
let (v, i) = (query[0], query[1] as usize);
203+
if nums[i] % 2 == 0 {
204+
s -= nums[i];
205+
}
206+
nums[i] += v;
207+
if nums[i] % 2 == 0 {
208+
s += nums[i];
209+
}
210+
ans.push(s);
211+
}
212+
213+
ans
214+
}
215+
}
216+
```
217+
202218
#### JavaScript
203219

204220
```js
@@ -208,12 +224,7 @@ function sumEvenAfterQueries(nums: number[], queries: number[][]): number[] {
208224
* @return {number[]}
209225
*/
210226
var sumEvenAfterQueries = function (nums, queries) {
211-
let s = 0;
212-
for (const x of nums) {
213-
if (x % 2 === 0) {
214-
s += x;
215-
}
216-
}
227+
let s = nums.reduce((acc, cur) => acc + (cur % 2 === 0 ? cur : 0), 0);
217228
const ans = [];
218229
for (const [v, i] of queries) {
219230
if (nums[i] % 2 === 0) {
@@ -229,6 +240,31 @@ var sumEvenAfterQueries = function (nums, queries) {
229240
};
230241
```
231242

243+
#### C#
244+
245+
```cs
246+
public class Solution {
247+
public int[] SumEvenAfterQueries(int[] nums, int[][] queries) {
248+
int s = nums.Where(x => x % 2 == 0).Sum();
249+
int[] ans = new int[queries.Length];
250+
251+
for (int j = 0; j < queries.Length; j++) {
252+
int v = queries[j][0], i = queries[j][1];
253+
if (nums[i] % 2 == 0) {
254+
s -= nums[i];
255+
}
256+
nums[i] += v;
257+
if (nums[i] % 2 == 0) {
258+
s += nums[i];
259+
}
260+
ans[j] = s;
261+
}
262+
263+
return ans;
264+
}
265+
}
266+
```
267+
232268
<!-- tabs:end -->
233269

234270
<!-- solution:end -->

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

Lines changed: 59 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,13 @@ After adding 2 to nums[3], the array is [-2,-1,3,6], and the sum of even values
6060

6161
<!-- solution:start -->
6262

63-
### Solution 1
63+
### Solution 1: Simulation
64+
65+
We use an integer variable $\textit{s}$ to record the sum of all even numbers in the array $\textit{nums}$. Initially, $\textit{s}$ is the sum of all even numbers in the array $\textit{nums}$.
66+
67+
For each query $(v, i),ドル we first check if $\textit{nums}[i]$ is even. If $\textit{nums}[i]$ is even, we subtract $\textit{nums}[i]$ from $\textit{s}$. Then, we add $v$ to $\textit{nums}[i]$. If $\textit{nums}[i]$ is even, we add $\textit{nums}[i]$ to $\textit{s},ドル and then add $\textit{s}$ to the answer array.
68+
69+
The time complexity is $O(n + m),ドル where $n$ and $m$ are the lengths of the arrays $\textit{nums}$ and $\textit{queries},ドル respectively. Ignoring the space consumption of the answer array, the space complexity is $O(1)$.
6470

6571
<!-- tabs:start -->
6672

@@ -171,12 +177,7 @@ func sumEvenAfterQueries(nums []int, queries [][]int) (ans []int) {
171177

172178
```ts
173179
function sumEvenAfterQueries(nums: number[], queries: number[][]): number[] {
174-
let s = 0;
175-
for (const x of nums) {
176-
if (x % 2 === 0) {
177-
s += x;
178-
}
179-
}
180+
let s = nums.reduce((acc, x) => acc + (x % 2 === 0 ? x : 0), 0);
180181
const ans: number[] = [];
181182
for (const [v, i] of queries) {
182183
if (nums[i] % 2 === 0) {
@@ -192,6 +193,31 @@ function sumEvenAfterQueries(nums: number[], queries: number[][]): number[] {
192193
}
193194
```
194195

196+
#### Rust
197+
198+
```rust
199+
impl Solution {
200+
pub fn sum_even_after_queries(mut nums: Vec<i32>, queries: Vec<Vec<i32>>) -> Vec<i32> {
201+
let mut s: i32 = nums.iter().filter(|&x| x % 2 == 0).sum();
202+
let mut ans = Vec::with_capacity(queries.len());
203+
204+
for query in queries {
205+
let (v, i) = (query[0], query[1] as usize);
206+
if nums[i] % 2 == 0 {
207+
s -= nums[i];
208+
}
209+
nums[i] += v;
210+
if nums[i] % 2 == 0 {
211+
s += nums[i];
212+
}
213+
ans.push(s);
214+
}
215+
216+
ans
217+
}
218+
}
219+
```
220+
195221
#### JavaScript
196222

197223
```js
@@ -201,12 +227,7 @@ function sumEvenAfterQueries(nums: number[], queries: number[][]): number[] {
201227
* @return {number[]}
202228
*/
203229
var sumEvenAfterQueries = function (nums, queries) {
204-
let s = 0;
205-
for (const x of nums) {
206-
if (x % 2 === 0) {
207-
s += x;
208-
}
209-
}
230+
let s = nums.reduce((acc, cur) => acc + (cur % 2 === 0 ? cur : 0), 0);
210231
const ans = [];
211232
for (const [v, i] of queries) {
212233
if (nums[i] % 2 === 0) {
@@ -222,6 +243,31 @@ var sumEvenAfterQueries = function (nums, queries) {
222243
};
223244
```
224245

246+
#### C#
247+
248+
```cs
249+
public class Solution {
250+
public int[] SumEvenAfterQueries(int[] nums, int[][] queries) {
251+
int s = nums.Where(x => x % 2 == 0).Sum();
252+
int[] ans = new int[queries.Length];
253+
254+
for (int j = 0; j < queries.Length; j++) {
255+
int v = queries[j][0], i = queries[j][1];
256+
if (nums[i] % 2 == 0) {
257+
s -= nums[i];
258+
}
259+
nums[i] += v;
260+
if (nums[i] % 2 == 0) {
261+
s += nums[i];
262+
}
263+
ans[j] = s;
264+
}
265+
266+
return ans;
267+
}
268+
}
269+
```
270+
225271
<!-- tabs:end -->
226272

227273
<!-- solution:end -->
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
public class Solution {
2+
public int[] SumEvenAfterQueries(int[] nums, int[][] queries) {
3+
int s = nums.Where(x => x % 2 == 0).Sum();
4+
int[] ans = new int[queries.Length];
5+
6+
for (int j = 0; j < queries.Length; j++) {
7+
int v = queries[j][0], i = queries[j][1];
8+
if (nums[i] % 2 == 0) {
9+
s -= nums[i];
10+
}
11+
nums[i] += v;
12+
if (nums[i] % 2 == 0) {
13+
s += nums[i];
14+
}
15+
ans[j] = s;
16+
}
17+
18+
return ans;
19+
}
20+
}

‎solution/0900-0999/0985.Sum of Even Numbers After Queries/Solution.js‎

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,7 @@
44
* @return {number[]}
55
*/
66
var sumEvenAfterQueries = function (nums, queries) {
7-
let s = 0;
8-
for (const x of nums) {
9-
if (x % 2 === 0) {
10-
s += x;
11-
}
12-
}
7+
let s = nums.reduce((acc, cur) => acc + (cur % 2 === 0 ? cur : 0), 0);
138
const ans = [];
149
for (const [v, i] of queries) {
1510
if (nums[i] % 2 === 0) {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
impl Solution {
2+
pub fn sum_even_after_queries(mut nums: Vec<i32>, queries: Vec<Vec<i32>>) -> Vec<i32> {
3+
let mut s: i32 = nums.iter().filter(|&x| x % 2 == 0).sum();
4+
let mut ans = Vec::with_capacity(queries.len());
5+
6+
for query in queries {
7+
let (v, i) = (query[0], query[1] as usize);
8+
if nums[i] % 2 == 0 {
9+
s -= nums[i];
10+
}
11+
nums[i] += v;
12+
if nums[i] % 2 == 0 {
13+
s += nums[i];
14+
}
15+
ans.push(s);
16+
}
17+
18+
ans
19+
}
20+
}

‎solution/0900-0999/0985.Sum of Even Numbers After Queries/Solution.ts‎

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
function sumEvenAfterQueries(nums: number[], queries: number[][]): number[] {
2-
let s = 0;
3-
for (const x of nums) {
4-
if (x % 2 === 0) {
5-
s += x;
6-
}
7-
}
2+
let s = nums.reduce((acc, x) => acc + (x % 2 === 0 ? x : 0), 0);
83
const ans: number[] = [];
94
for (const [v, i] of queries) {
105
if (nums[i] % 2 === 0) {

0 commit comments

Comments
(0)

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