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

ผลรวมของเลขคู่หลังจากการคิวรีใน Python

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