985. Sum of Even Numbers After Queries

LeetCode medium original: C# #array #backtracking #csharp #leetcode #medium
선택한 UI 언어에 맞게 문제 텍스트를 러시아어에서 번역합니다. 코드는 변경하지 않습니다.

Дан 정수 배열 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 표시됨.

전체 채용
아직 활성 채용이 없습니다.