LeetCode 985. 查询后的偶数和
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 985. 查询后的偶数和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給出一個整數數組 A 和一個查詢數組 queries。
對于第 i 次查詢,有 val = queries[i][0], index = queries[i][1],我們會把 val 加到 A[index] 上。
然后,第 i 次查詢的答案是 A 中偶數值的和。
(此處給定的 index = queries[i][1] 是從 0 開始的索引,每次查詢都會永久修改數組 A。)
返回所有查詢的答案。你的答案應當以數組 answer 給出,answer[i] 為第 i 次查詢的答案。
示例: 輸入:A = [1,2,3,4], queries = [[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。 將 -4 加到 A[0] 上之后,數組為 [-2,-1,3,4],偶數值之和為 -2 + 4 = 2。 將 2 加到 A[3] 上之后,數組為 [-2,-1,3,6],偶數值之和為 -2 + 6 = 4。提示: 1 <= A.length <= 10000 -10000 <= A[i] <= 10000 1 <= queries.length <= 10000 -10000 <= queries[i][0] <= 10000 0 <= queries[i][1] < A.length來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/sum-of-even-numbers-after-queries
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
int func(int x, int y) {if(y%2 == 0)return x+y;elsereturn x; } class Solution { public:vector<int> sumEvenAfterQueries(vector<int>& A, vector<vector<int>>& queries) {vector<int> ans;int sum = accumulate(A.begin(), A.end(),0,func);//偶數總和for(int i = 0; i < queries.size(); ++i){if((queries[i][0]+A[queries[i][1]]) % 2 == 0){if(A[queries[i][1]]%2 == 0)//是偶數直接+sum += queries[i][0];else//是奇數,加完是偶數,加上兩個奇數sum += queries[i][0]+A[queries[i][1]];}else//相加后是奇數{if(A[queries[i][1]]%2 == 0)//原來是偶數sum -= A[queries[i][1]];//減去}A[queries[i][1]] += queries[i][0];ans.push_back(sum);}return ans;} };168 ms 28.9 MB
總結
以上是生活随笔為你收集整理的LeetCode 985. 查询后的偶数和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1310. 子数组异或
- 下一篇: LeetCode 536. 从字符串生成