สมมติว่าเรามีอาร์เรย์ของจำนวนเต็มที่เรียกว่า A และแบบสอบถามอาร์เรย์ สำหรับค่าการสืบค้นที่ i =การสืบค้น[i][0] และดัชนี =การสืบค้น[i][1] เราจะเพิ่มมูลค่าให้กับ A[ดัชนี] จากนั้น คำตอบของแบบสอบถามที่ i คือผลรวมของค่าคู่ของ A เราต้องหาคำตอบของคำถามทั้งหมด เราจะพบอาร์เรย์ที่ควรมี answer[i] เป็นคำตอบสำหรับแบบสอบถามที่ i ดังนั้นหากอาร์เรย์เป็นเหมือน [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 เพื่อเก็บผลลัพธ์
- ผลรวม :=0
- สำหรับแต่ละองค์ประกอบ i ใน A
- ถ้า i เป็นเลขคู่ ให้ sum :=sum + i
- สำหรับแต่ละแบบสอบถาม i ในแบบสอบถาม −
- ดัชนี :=ผม[1]
- val :=i[0]
- ถ้า A[index] เป็นเลขคู่ ดังนั้น sum :=sum – A[index]
- A[index] :=A[index] + val
- ถ้า A[index] เป็นเลขคู่ ดังนั้น sum :=sum + A[index]
- ผลรวมจะถูกผนวกเข้ากับ 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]