985. Sum of Even Numbers After Queriesphp
給定一個初始數組A
,再給定一個二維操做數組Q
。數組
操做數組裏的每個值是一個數組。其第一個值表明要添加的數。第二個值表明須要操做的數字在數組A
中的下標。spa
也即,須要對A[Q[1]]
加A[Q[0]
。.net
結果中第i個元素的結果爲,當執行第i步時,數組A中偶數元素的和。code
這題若是每一步都array_sum的話時間開銷會很大,因此採起的方案是先計算初始數組中偶數的和。leetcode
再在每一步計算的過程當中,判斷當前位置是否爲偶數。
若爲偶數,那麼代表在最初已經計算過偶數和了,那麼把它從偶數和中減去。get
判斷相加了第0個元素後,是否爲偶數。是則加進偶數和中。it
修改原數組A用於後面計算。io
把每一步的偶數和記錄下來,以便最後返回。function
<?php
class Solution {
/** * @param Integer[] $A * @param Integer[][] $queries * @return Integer[] */
function sumEvenAfterQueries($A, $queries) {
$evens = array_filter($A,function($val){
return $val%2==0;
});
$total = array_sum($evens);
$sums = [];
foreach($queries as $query){
if($A[$query[1]]%2 == 0){
$total -= $A[$query[1]];
}
if(($A[$query[1]]+$query[0])%2==0){
$total += $query[0] + $A[$query[1]];
}
$sums[] = $total;
$A[$query[1]] += $query[0];
}
return $sums;
}
}
複製代碼
若以爲本文章對你有用,歡迎用愛發電資助。