ETH官方钱包

前往
大廳
主題

LeetCode - 985. Sum of Even Numbers After Queries 解題心得

Not In My Back Yard | 2021-02-28 00:00:01 | 巴幣 0 | 人氣 154

題目連結:


題目意譯:
我們有一整數陣列 A ,以及一個詢問陣列 queries。

對於第 i 筆詢問 val = queries[i][0] 、 index = queries[i][1],我們將 A[index] 加上 val。然後,第 i 筆詢問之答案為 A 中所有偶數元素之和。

(在此,給定的 index = queries[i][1] 代表從 0 開始數之索引值,且每筆詢問將永久性地更改陣列 A)

回傳每筆詢問之答案。你的答案陣列應有 answer[i] 作為第 i 筆詢問。

注:
1 ≦ A.length ≦ 10000
-10000 ≦ A[i] ≦ 10000
1 ≦ queries.length ≦ 10000
-10000 ≦ queries[i][0] ≦ 10000
0 ≦ queries[i][1] < A.length



範例測資:
輸入: A = [1,2,3,4], queries = [[1,0],[-3,1],[-4,0],[2,3]]
輸出: [8,6,2,4]
解釋:
一開始,陣列為 [1,2,3,4]。
將 A[0] 加上  1 後,陣列為 [ 2, 2,3,4],且偶數值之和為 2 + 2 + 4 = 8 。
將 A[1] 加上 -3 後,陣列為 [ 2,-1,3,4],且偶數值之和為 2 + 4 = 6 。
將 A[0] 加上 -4 後,陣列為 [-2,-1,3,4],且偶數值之和為 -2 + 4 = 2 。
將 A[3] 加上  2 後,陣列為 [-2,-1,3,6],且偶數值之和為 -2 + 6 = 4 。


解題思維:
先掃過一次 A 將所有偶數元素加總,定為 E。

接著對於每筆詢問 val 、 index,則會有四種情況:
A[index] 為奇數且 val 為奇數,修改後 A[index] 為偶數,則將 E 加上修改後的 A[index];
A[index] 為奇數且 val 為偶數,修改後 A[index] 為奇數,則不做任何動作;
A[index] 為偶數且 val 為奇數,修改後 A[index] 為奇數,則將 E 減去修改前的 A[index];
A[index] 為偶數且 val 為偶數,修改後 A[index] 為偶數,則將 E 加上 val。
按照上述的情況將 E 調整完後,此時的 E 即是當前詢問之答案。

將所有詢問的答案存入一陣列即是所求。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作