985. Sum of Even Numbers After Queries
Дан 整数 数组 nums и 数组 queries, где queries[i] = [vali, indexi].
Для каждого запроса i, сначала примените nums[indexi] = nums[indexi] + vali, затем выведите сумму четных значений nums.
return 整数 数组 answer, где answer[i] - это ответ на i-й запрос.
示例
Input: nums = [1], queries = [[4,0]]
Output: [0]
C# 解法
匹配/原始public class Solution {
public int[] SumEvenAfterQueries(int[] nums, int[][] queries) {
int evenSum = nums.Where(x => x % 2 == 0).Sum();
int[] result = new int[queries.Length];
for (int i = 0; i < queries.Length; i++) {
int val = queries[i][0], index = queries[i][1];
if (nums[index] % 2 == 0) {
evenSum -= nums[index];
}
nums[index] += val;
if (nums[index] % 2 == 0) {
evenSum += nums[index];
}
result[i] = evenSum;
}
return result;
}
}
C++ 解法
自动草稿,提交前请检查#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public vector<int>& SumEvenAfterQueries(vector<int>& nums, int[][] queries) {
int evenSum = nums.Where(x => x % 2 == 0).Sum();
vector<int>& result = new int[queries.size()];
for (int i = 0; i < queries.size(); i++) {
int val = queries[i][0], index = queries[i][1];
if (nums[index] % 2 == 0) {
evenSum -= nums[index];
}
nums[index] += val;
if (nums[index] % 2 == 0) {
evenSum += nums[index];
}
result[i] = evenSum;
}
return result;
}
}
Java 解法
匹配/原始public class Solution {
public int[] sumEvenAfterQueries(int[] nums, int[][] queries) {
int evenSum = 0;
for (int num : nums) {
if (num % 2 == 0) {
evenSum += num;
}
}
int[] result = new int[queries.length];
for (int i = 0; i < queries.length; i++) {
int val = queries[i][0], index = queries[i][1];
if (nums[index] % 2 == 0) {
evenSum -= nums[index];
}
nums[index] += val;
if (nums[index] % 2 == 0) {
evenSum += nums[index];
}
result[i] = evenSum;
}
return result;
}
}
JavaScript 解法
匹配/原始var sumEvenAfterQueries = function(nums, queries) {
let evenSum = nums.reduce((acc, num) => num % 2 === 0 ? acc + num : acc, 0);
const result = [];
for (const [val, index] of queries) {
if (nums[index] % 2 === 0) {
evenSum -= nums[index];
}
nums[index] += val;
if (nums[index] % 2 === 0) {
evenSum += nums[index];
}
result.push(evenSum);
}
return result;
};
Go 解法
匹配/原始func sumEvenAfterQueries(nums []int, queries [][]int) []int {
evenSum := 0
for _, num := range nums {
if num % 2 == 0 {
evenSum += num
}
}
result := make([]int, len(queries))
for i, query := range queries {
val, index := query[0], query[1]
if nums[index] % 2 == 0 {
evenSum -= nums[index]
}
nums[index] += val
if nums[index] % 2 == 0 {
evenSum += nums[index]
}
result[i] = evenSum
}
return result
}
Algorithm
1⃣Инициализация переменных:
Завести переменную evenSum для хранения суммы всех четных чисел в 数组е nums.
Пройти по 数组у nums и вычислить начальное значение evenSum, сложив все четные числа в nums.
2⃣Обработка запросов:
Создать пустой 数组 result для хранения ответов на каждый запрос.
Для каждого запроса [val, index] из 数组а queries выполнить следующие действия:
Если значение nums[index] четное, вычесть его из evenSum.
Обновить nums[index] добавлением val.
Если новое значение nums[index] четное, добавить его к evenSum.
Добавить текущее значение evenSum в 数组 result.
3⃣Возврат результата:
Вернуть 数组 result, содержащий ответы на все запросы.
😎
Vacancies for this task
活跃职位 with overlapping task tags are 已显示.