Giả sử chúng ta có một mảng số nguyên A và một mảng truy vấn. Với truy vấn thứ i, giá trị = queries[i][0] và chỉ số = queries[i][1], chúng ta sẽ cộng giá trị vào A[index]. Sau đó, kết quả của truy vấn thứ i là tổng các giá trị chẵn của A. Chúng ta cần tìm kết quả cho tất cả các truy vấn. Kết quả sẽ là một mảng, trong đó answer[i] là câu trả lời cho truy vấn thứ i. Ví dụ, nếu mảng là [1,2,3,4] và mảng truy vấn là [[1,0],[-3,1],[-4,0],[2,3]], thì mảng kết quả sẽ là [8,6,2,4].
Ban đầu mảng là [1,2,3,4]. Sau truy vấn đầu tiên, cộng 1 vào A[0], mảng trở thành [2,2,3,4], tổng các số chẵn là 2 + 2 + 4 = 8. Truy vấn thứ hai cộng -3 vào A[1], mảng thành [2,-1,3,4], tổng số chẵn là 2 + 4 = 6. Tiếp tục ta được mảng [8,6,2,4].
Giải pháp
Các bước thực hiện:
- Khởi tạo mảng res để lưu kết quả.
- Khởi tạo biến sum = 0.
- Duyệt từng phần tử i trong A: nếu i chẵn thì sum += i.
- Duyệt từng truy vấn i trong queries:
- index = i[1], val = i[0].
- Nếu A[index] chẵn thì sum -= A[index].
- Cập nhật A[index] += val.
- Nếu A[index] chẵn thì sum += A[index].
- Thêm sum vào res.
- Trả về res.
Ví dụ
Dưới đây là triển khai Python để hiểu rõ hơn:
class Solution(object):
def sumEvenAfterQueries(self, A, queries):
result = []
sum = 0
for i in A:
if i%2==0:
sum+=i
for i in queries:
index = i[1]
val = i[0]
if A[index] % 2==0:
sum-=A[index]
A[index]+=val
if A[index]%2==0:
sum+=A[index]
result.append(sum)
return result
ob1 = Solution()
print(ob1.sumEvenAfterQueries([1,2,3,4], [[1,0],[-3,1],[-4,0],[2,3]])) Đầu vào
[1,2,3,4] [[1,0],[-3,1],[-4,0],[2,3]]
Đầu ra
[8,6,2,4]