1. 程式人生 > >[Swift Weekly Contest 122]LeetCode985. 查詢後的偶數和 | Sum of Even Numbers After Queries

[Swift Weekly Contest 122]LeetCode985. 查詢後的偶數和 | Sum of Even Numbers After Queries

提示 out each eat 永久 bind put mono solution

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

給出一個整數數組 A 和一個查詢數組 queries

對於第 i 次查詢,有 val = queries[i][0], index = queries[i][1],我們會把 val 加到 A[index] 上。然後,第 i 次查詢的答案是 A 中偶數值的和。

(此處給定的 index = queries[i][1]

是從 0 開始的索引,每次查詢都會永久修改數組 A。)

返回所有查詢的答案。你的答案應當以數組 answer 給出,answer[i] 為第 i 次查詢的答案。

示例:

輸入:A = [1,2,3,4], queries = [[1,0],[-3,1],[-4,0],[2,3]]
輸出:[8,6,2,4]
解釋:
開始時,數組為 [1,2,3,4]。
將 1 加到 A[0] 上之後,數組為 [2,2,3,4],偶數值之和為 2 + 2 + 4 = 8。
將 -3 加到 A[1] 上之後,數組為 [2,-1,3,4],偶數值之和為 2 + 4 = 6。
將 -4 加到 A[0] 上之後,數組為 [-2,-1,3,4],偶數值之和為 -2 + 4 = 2。
將 2 加到 A[3] 上之後,數組為 [-2,-1,3,6],偶數值之和為 -2 + 6 = 4。

提示:

  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

772 ms

 1 class Solution {
 2     func sumEvenAfterQueries(_ A: [Int], _ queries: [[Int]]) -> [Int] {
 3         var A = A
 4         var s:Int = 0
 5         for v in A
 6         {
 7             if v % 2 == 0
 8             {
 9                 s += v           
10             }
11         }
12         var q:Int = queries.count
13         var ret:[Int] = [Int](repeating:0,count:q)
14         for i in 0..<q
15         {
16             var d:Int = queries[i][0]
17             var pos:Int = queries[i][1]
18             if A[pos] % 2 == 0
19             {
20                 s -= A[pos]
21             }
22             A[pos] += d
23             if A[pos] % 2 == 0
24             {
25                 s += A[pos]
26             }
27             ret[i] = s
28         }
29         return ret
30     }
31 }

[Swift Weekly Contest 122]LeetCode985. 查詢後的偶數和 | Sum of Even Numbers After Queries