# 985. Sum of Even Numbers After Queries 查询后的偶数和

@TOC

## # 题目描述

We have an array `A` of integers, and an array queries of queries.

For the `i`-th query `val = queries[i][0]`, `index = queries[i][1]`, we add val to `A[index]`. Then, the answer to the `i-th` query is the sum of the even values of `A`.

(Here, the given `index = queries[i][1]` is a 0-based index, and each query permanently modifies the array A.)

Return the answer to all queries. Your answer array should have `answer[i]` as the answer to the i-th query.

Example 1:

``````Input: A = [1,2,3,4], queries = [[1,0],[-3,1],[-4,0],[2,3]]
Output: [8,6,2,4]
Explanation:
At the beginning, the array is [1,2,3,4].
After adding 1 to A[0], the array is [2,2,3,4], and the sum of even values is 2 + 2 + 4 = 8.
After adding -3 to A[1], the array is [2,-1,3,4], and the sum of even values is 2 + 4 = 6.
After adding -4 to A[0], the array is [-2,-1,3,4], and the sum of even values is -2 + 4 = 2.
After adding 2 to A[3], the array is [-2,-1,3,6], and the sum of even values is -2 + 6 = 4.
``````

Note:

1. 1 <= A.length <= 10000
2. -10000 <= A[i] <= 10000
3. 1 <= queries.length <= 10000
4. -10000 <= queries[i][0] <= 10000
5. 0 <= queriesiopen in new window < A.length

## # 解题方法

### # 暴力

``````class Solution {
public:
vector<int> sumEvenAfterQueries(vector<int>& A, vector<vector<int>>& queries) {
vector<int> res;
for (auto q : queries) {
A[q[1]] += q[0];
int sum = 0;
for (int a : A) {
if (a % 2 == 0) {
sum += a;
}
}
res.push_back(sum);
}
return res;
}
};
``````

### # 找规律

• 偶 ==> 奇
• 偶 ==> 偶
• 奇 ==> 奇
• 奇 ==> 偶

C++代码如下：

``````class Solution {
public:
vector<int> sumEvenAfterQueries(vector<int>& A, vector<vector<int>>& queries) {
vector<int> sums;
int cursum = 0;
for (int a : A) {
if (a % 2 == 0) {
cursum += a;
}
}
for (auto q : queries) {
if (A[q[1]] % 2 == 0) {
cursum -= A[q[1]];
}
A[q[1]] += q[0];
if (A[q[1]] % 2 == 0) {
cursum += A[q[1]];
}
sums.push_back(cursum);
}
return sums;
}
};
``````

## # 日期

2019 年 2 月 19 日 —— 重拾状态