[Solution] 985. Sum of Even Numbers After Queries

  • Difficulty: Easy

Question

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 the 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 <= queries[i][1] < A.length

Related Topics

Array

Solution

  1. 求出原数组中的偶数和
  2. 对于每一个查询,对于数组元素 A[queries[i][1]] 的影响,按以下四种情况处理:
    • 之前为奇数,之后为奇数:无需操作;
    • 之前为奇数,之后为偶数:在原偶数和的基础上加上这个新增的偶数;
    • 之前为偶数,之后为奇数:在原偶数和的基础上去掉这个之前的偶数;
    • 之前为偶数,之后为奇数:在原偶数和的基础上加上一个变化量(可能为正,也可能为负);

    将每次查询得到的偶数和放入结果数组中即为所求。

public class Solution
{
    public int[] SumEvenAfterQueries(int[] A, int[][] queries)
    {
        int[] ret = new int[queries.GetLength(0)];
        int sum = (from x in A where x % 2 == 0 select x).Sum();

        for(int i = 0; i < queries.GetLength(0); i++)
        {
            int before = A[queries[i][1]];
            A[queries[i][1]] += queries[i][0];
            if(before % 2 == 0)
            {
                if(A[queries[i][1]] % 2 == 0)
                {
                    int delta = A[queries[i][1]] - before;
                    sum += delta;
                }
                else
                {
                    sum -= before;
                }
            }
            else
            {
                if(A[queries[i][1]] % 2 == 0)
                {
                    sum += A[queries[i][1]];
                }
                else
                {
                    // no operation
                }
            }
            ret[i] = sum;
        }

        return ret;
    }
}

原文地址:https://www.cnblogs.com/Downstream-1998/p/10351115.html

时间: 2024-10-16 09:51:33

[Solution] 985. Sum of Even Numbers After Queries的相关文章

【Leetcode_easy】985. Sum of Even Numbers After Queries

problem 985. Sum of Even Numbers After Queries class Solution { public: vector<int> sumEvenAfterQueries(vector<int>& A, vector<vector<int>>& queries) { vector<int> res; int sum = 0; for(auto a:A) if(a%2==0) sum +=a; f

LeetCode 985 Sum of Even Numbers After Queries 解题报告

题目要求 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 inde

Leetcode 985. Sum of Even Numbers After Queries

简单题,按照它给的说法计算就行. class Solution: def sumEvenAfterQueries(self, A: List[int], queries: List[List[int]]) -> List[int]: s = sum(x for x in A if x % 2 == 0) ans = [] for v, i in queries: new = A[i] + v s += new if new % 2 == 0 else 0 s -= A[i] if A[i] %

LC 985. Sum of Even Numbers After Queries

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 = q

【leetcode】985. Sum of Even Numbers After Queries

题目如下: 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 ind

[Swift Weekly Contest 122]LeetCode985. 查询后的偶数和 | Sum of Even Numbers After Queries

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 = q

Timus 1120. Sum of Sequential Numbers 数学题

There is no involute formulation concerning factitiously activity of SKB Kontur in this problem. Moreover, there is no formulation at all. Input There is the only number N, 1 ≤ N ≤ 109. Output Your program is to output two positive integers A and P s

1-Two sum 2-Add two numbers

1.Two sum Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please

周刷题第一期总结(two sum and two numbers)

由于深深的知道自己是事件驱动型的人,一直想补强自己的薄弱环节算法,却完全不知道从哪里入手.所以只能采用最笨的办法,刷题.从刷题中遇到问题就解决问题,最后可能多多少少也能提高一下自己的渣算法吧. 暂时的目标是一周最少两道,可能会多做多想,工作再忙也会完成这个最低目标. Two sum: Given an array of integers, return indices of the two numbers such that they add up to a specific target. Y