Leetcode PHP題解--D48 985. Sum of Even Numbers After Queries

D48 985. Sum of Even Numbers After Queries

題目連接

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;
    }
}
複製代碼

若以爲本文章對你有用,歡迎用愛發電資助。

相關文章
相關標籤/搜索