Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 쿼리 후 짝수의 합

<시간/>

A라는 정수 배열과 배열 쿼리가 있다고 가정합니다. i 번째 쿼리 값 =쿼리[i][0] 및 인덱스 =쿼리[i][1]의 경우 A[인덱스]에 값을 추가합니다. 그러면 i번째 질의의 답은 A의 짝수 값의 합이다. 우리는 모든 질의에 대한 답을 찾아야 한다. i번째 쿼리에 대한 답변으로 answer[i]가 있어야 하는 배열을 찾을 것입니다. 따라서 배열이 [1,2,3,4]이고 쿼리 배열이 [[1,0],[-3,1],[-4,0],[2,3]]과 같은 경우 그러면 응답 배열은 [8,6,2,4]와 같습니다. 따라서 처음에는 배열이 [1,2,3,4]이고 첫 번째 쿼리 후에 A[0]과 함께 1을 더하면 배열은 [2,2,3,4]가 되고 짝수 값의 합은 다음과 같습니다. 2 + 2 + 4 =8. 두 번째 쿼리의 경우 A[1]에 -3을 더한 다음 배열은 [2,-1,3,4]이므로 짝수의 합 2 + 4 =6 . 우리는 배열 [8,6,2,4]

를 얻고 있습니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 결과를 저장하기 위해 res라는 배열을 정의합니다.
  • 합계 :=0
  • A
      의 각 요소 i에 대해
    • i가 짝수이면 sum :=sum + i
  • 쿼리의 각 쿼리 i에 대해 −
    • 인덱스 :=i[1]
    • val :=i[0]
    • A[index]가 짝수이면 sum :=sum – A[index]
    • A[색인] :=A[색인] + 값
    • A[index]가 짝수이면 sum :=sum + A[index]
    • 합계가 결과에 추가됨
  • 반환 결과

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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]