สมมติว่าเรามีอาร์เรย์ของจำนวนเต็มที่เรียกว่า A และอาร์เรย์คิวรี สำหรับคิวรีที่ i-th ค่าจะเป็น queries[i][0] และดัชนีจะเป็น queries[i][1] เราจะเพิ่มค่าเข้าไปใน A[index] จากนั้นคำตอบของคิวรีที่ i-th คือผลรวมของค่าที่เป็นเลขคู่ของ A เราต้องหาคำตอบสำหรับคิวรีทั้งหมด เราจะหาอาร์เรย์ที่ควรมี answer[i] เป็นคำตอบของคิวรีที่ i-th
เช่น ถ้าอาร์เรย์เป็น [1,2,3,4] และอาร์เรย์คิวรีเป็น [[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 ดังนั้นเราจะได้อาร์เรย์ [8,6,2,4]
วิธีการแก้ปัญหา
- กำหนดอาร์เรย์ชื่อ res เพื่อเก็บผลลัพธ์
- sum := 0
- สำหรับแต่ละองค์ประกอบ i ใน A:
- ถ้า i เป็นเลขคู่ ให้ sum := sum + i
- สำหรับแต่ละคิวรี i ใน queries:
- index := i[1]
- val := i[0]
- ถ้า A[index] เป็นเลขคู่ ให้ sum := sum - A[index]
- A[index] := A[index] + val
- ถ้า A[index] เป็นเลขคู่ ให้ sum := sum + A[index]
- นำ sum ไปเพิ่มใน res
- คืนค่า res
ตัวอย่างโค้ด
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]]))
อินพุต
[1,2,3,4] [[1,0],[-3,1],[-4,0],[2,3]]
เอาต์พุต
[8,6,2,4]