给你一个长度为 'n'
的整数数组 nums
,以及一个二维整数数组 queries
,其中 queries[i] = [idx, val]
。
对于每个查询:
nums[idx] = val
。1 <= k < n
的整数 k
,将数组分为非空前缀 nums[0..k-1]
和后缀 nums[k..n-1]
,使得每部分中 不同 质数的数量之和 最大 。注意:每次查询对数组的更改将持续到后续的查询中。
返回一个数组,包含每个查询的结果,按给定的顺序排列。
质数是大于 1 的自然数,只有 1 和它本身两个因数。
示例 1:
输入: nums = [2,1,3,1,2], queries = [[1,2],[3,3]]
输出: [3,4]
解释:
nums = [2, 1, 3, 1, 2]
。nums = [2, 2, 3, 1, 2]
。将 nums
分为 [2]
和 [2, 3, 1, 2]
。[2]
包含 1 个不同的质数,[2, 3, 1, 2]
包含 2 个不同的质数。所以此查询的答案是 1 + 2 = 3
。nums = [2, 2, 3, 3, 2]
。将 nums
分为 [2, 2, 3]
和 [3, 2]
,其答案为 2 + 2 = 4
。[3, 4]
。示例 2:
输入: nums = [2,1,4], queries = [[0,1]]
输出: [0]
解释:
nums = [2, 1, 4]
。nums = [1, 1, 4]
。此时数组中没有质数,因此此查询的答案为 0。[0]
。
提示:
2 <= n == nums.length <= 5 * 104
1 <= queries.length <= 5 * 104
1 <= nums[i] <= 105
0 <= queries[i][0] < nums.length
1 <= queries[i][1] <= 105