You are given an integer array nums
and an array queries
where queries[i] = [vali, indexi]
.
For each query i
, first, apply nums[indexi] = nums[indexi] + vali
, then print the sum of the even values of nums
.
Return an integer array answer
where answer[i]
is the answer to the ith
query.
Example 1:
Input: nums = [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 nums[0], the array is [2,2,3,4], and the sum of even values is 2 + 2 + 4 = 8. After adding -3 to nums[1], the array is [2,-1,3,4], and the sum of even values is 2 + 4 = 6. After adding -4 to nums[0], the array is [-2,-1,3,4], and the sum of even values is -2 + 4 = 2. After adding 2 to nums[3], the array is [-2,-1,3,6], and the sum of even values is -2 + 6 = 4.
Example 2:
Input: nums = [1], queries = [[4,0]] Output: [0]
Constraints:
1 <= nums.length <= 104
-104 <= nums[i] <= 104
1 <= queries.length <= 104
-104 <= vali <= 104
0 <= indexi < nums.length
This problem asks to calculate the sum of even numbers in an array after applying a series of queries. Each query involves adding a value to a specific element in the array. Instead of recalculating the sum of even numbers from scratch after each query, which would be inefficient, a more optimized approach is used.
Algorithm:
Initial Sum: Calculate the initial sum of even numbers in the nums
array. This is done in a single pass.
Iterate Through Queries: Process each query from the queries
array.
Update Sum: For each query [val, index]
:
nums[index]
is even. If it is, subtract it from the current sum of even numbers (s
). This is because we're about to modify this element.nums[index]
by adding val
.nums[index]
is even. If it is, add it to the current sum of even numbers (s
).s
to the ans
array. This s
represents the sum of even numbers after applying the current query.Return Result: Return the ans
array containing the sum of even numbers after each query.
Time Complexity Analysis:
nums
array. This step iterates through the array once.Space Complexity Analysis:
s
and ans
. The space used by ans
is proportional to the number of queries (M).Code Examples (Python, Java, C++, Go, TypeScript, Javascript):
The code examples in various languages provided earlier demonstrate this algorithm. All versions have the same core logic: They first calculate the sum of even numbers, then iteratively update this sum based on each query, ensuring that only even numbers are included in the sum. The slight differences between languages reflect their syntax and standard libraries. For example, the way arrays are handled, and the use of for...of
loops versus standard for
loops.