Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ผลรวมของจำนวนคู่หลังการสืบค้นใน Python


สมมติว่าเรามีอาร์เรย์ของจำนวนเต็มที่เรียกว่า 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]