Сложность: medium
Дан целочисленный массив nums и массив queries, где queries[i] = [vali, indexi].
Для каждого запроса i, сначала примените nums[indexi] = nums[indexi] + vali, затем выведите сумму четных значений nums.
Верните целочисленный массив answer, где answer[i] - это ответ на i-й запрос.
Пример:
Input: nums = [1], queries = [[4,0]]
Output: [0]
👨💻 Алгоритм:
1⃣Инициализация переменных:
Завести переменную evenSum для хранения суммы всех четных чисел в массиве nums.
Пройти по массиву nums и вычислить начальное значение evenSum, сложив все четные числа в nums.
2⃣Обработка запросов:
Создать пустой массив result для хранения ответов на каждый запрос.
Для каждого запроса [val, index] из массива queries выполнить следующие действия:
Если значение nums[index] четное, вычесть его из evenSum.
Обновить nums[index] добавлением val.
Если новое значение nums[index] четное, добавить его к evenSum.
Добавить текущее значение evenSum в массив result.
3⃣Возврат результата:
Вернуть массив result, содержащий ответы на все запросы.
😎 Решение:
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;
}
}Ставь 👍 и забирай 📚 Базу знаний