給出乙個整數陣列 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。
首先計算原始陣列a的偶數的和sum,後續只需在此基礎上進行加減,不用多次遍歷。
將val 加到 a[index]上,再計算更新後的a的偶數的和有四種情況:
a[index]原本就是偶數,加上val仍為偶數,則更新後a的偶數和:sum加上val;
a[index]原本就是偶數,加上val變為奇數,則更新後a的偶數和:sum減去原來a[index]的值;
a[index]原本是奇數,加上val變為偶數,則更新後a的偶數和:sum加上原本的a[index]和val;
a[index]原本是奇數,加上val仍為奇數,則更新後a的偶數和不變,仍為sum。
class
solution
(object)
: def sumevenafterqueries
(self, a, queries)
:"""
:type a: list[
int]
:type queries: list[list[
int]
]:rtype: list[
int]
"""
sum_even =
0 # 偶數的和
for num in a:
if num%2==
0:sum_even = sum_even + num
query =
len(queries) # 查詢次數
ans =
list()
for i in range(0
,query)
: val = queries[i][0
] index = queries[i][1
]
# a[index]原本就是偶數
if a[index]%2
==0: # a[index]
+val仍為偶數
if(a[index]
+val)%2
==0:
sum_even = sum_even + val
ans.
(sum_even)
# a[index]
+val為奇數
else
:
sum_even = sum_even - a[index]
ans.
(sum_even)
# a[index]原本是奇數
else
: # a[index]
+val為偶數
if(a[index]
+val)%2
==0:
sum_even = sum_even + a[index]
+ val
ans.
(sum_even)
# a[index]
+val為奇數
else
:
ans.
(sum_even)
# 更新a[index]的值
a[index]
= a[index]
+val
return ans
力扣刷題記錄 陣列 簡單 896單調數列
如果陣列是單調遞增或單調遞減的,那麼它是單調的。如果對於所有 i j,a i a j 那麼陣列 a 是單調遞增的。如果對於所有 i j,a i a j 那麼陣列 a 是單調遞減的。當給定的陣列 a 是單調陣列時返回 true,否則返回 false。class solution object def ...
力扣刷題記錄05
題目分類 二分查詢 時間 2020 09 09 題目一 兩數之和 兩數之和 ii 輸入有序陣列 給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 ind...
力扣刷題記錄2
第一題是每日一題的簡單題。需要記的並不多,一是用迭代器對vector的一些基本操作。可以參考這裡 for vector iterator iter num.begin iter num.end iter 另外是快排的思想。這種思想實用性很廣,即使不需要排序,在找出最大的k個數,對陣列進行分割 以中間...