Computer >> 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 được gọi là A và một truy vấn mảng. Đối với giá trị truy vấn thứ i =queries [i] [0] và index =queries [i] [1], chúng ta sẽ thêm giá trị vào A [index]. Khi đó, câu trả lời của truy vấn thứ i là tổng các giá trị chẵn của A. Chúng ta phải tìm câu trả lời cho tất cả các truy vấn. Chúng ta sẽ tìm một mảng, mảng đó phải có câu trả lời [i] làm câu trả lời cho truy vấn thứ i. Vì vậy, nếu mảng giống như [1,2,3,4] và mảng truy vấn giống như [[1,0], [- 3,1], [- 4,0], [2,3]], thì mảng câu trả lời sẽ giống như [8,6,2,4]. Vì vậy, lúc đầu mảng là [1,2,3,4], sau đó sau truy vấn đầu tiên, thêm 1 với A [0], khi đó mảng sẽ là [2,2,3,4], tổng các giá trị chẵn là 2 + 2 + 4 =8. Đối với truy vấn thứ hai, nó sẽ thêm -3 với A [1], sau đó mảng sẽ là [2, -1,3,4], vì vậy tổng các số chẵn 2 + 4 =6 . Như vậy, chúng ta sẽ nhận được mảng [8,6,2,4]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Xác định một mảng có tên là res để lưu trữ kết quả
  • sum:=0
  • cho mỗi phần tử i trong A
    • nếu tôi chẵn thì sum:=sum + i
  • cho mỗi truy vấn tôi trong các truy vấn -
    • chỉ mục:=i [1]
    • val:=i [0]
    • nếu A [chỉ số] chẵn thì sum:=sum - A [chỉ số]
    • A [index]:=A [index] + val
    • nếu A [chỉ số] chẵn thì sum:=sum + A [chỉ mục]
    • tổng được thêm vào res
  • trả lại res

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để 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]