Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tổng các số chẵn sau các truy vấn trong Python


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]