import java.util.List; /* * @lc app=leetcode.cn id=985 lang=java * * [985] 令牌放置 * * https://leetcode-cn.com/problems/sum-of-even-numbers-after-queries/description/ * * algorithms * Easy (67.55%) * Total Accepted: 1.8K * Total Submissions: 2.7K * Testcase Example: '[1,2,3,4] [[1,0],[-3,1],[-4,0],[2,3]]' * * 给出一个整数数组 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 * * */ class Solution { public static int[] sumEvenAfterQueries(int[] A, int[][] queries) { List<Integer> list = new ArrayList<Integer>(); if (A == null || A.length==0) { return null; } if (queries != null && queries.length>0) { for (int i=0;i<queries.length;i++) { int[] temp = queries[i]; int value = temp[0]; int index = temp[1]; int a_val = A[index]; int sum = value+a_val; A[index] = sum;//修改数组中的值 //循环处理A数组 int _sum = 0; for (int _i=0;_i<A.length;_i++) { int num = A[_i]; if ((Math.abs(num))%2 == 0) { _sum+=num; } } list.add(_sum); } } return returnResult(list); } //封装返回的结果 public static int[] returnResult(List<Integer> list){ //首先边界判断 if (list.size() == 0 || list == null) { return null; } int [] result = new int[list.size()]; for (int i=0;i<list.size();i++) { result[i] = list.get(i); } return result; } }