C++程序 计算数组范围内的平均数
给定一个包含 n 个整数的数组。你需要解决 q 个查询。编写一个程序,在每个查询的新行中打印区间 [l, r] 的平均值向下取整的值。
示例:
Naive Approach: 我们可以为每个查询 l 到 r 运行循环并查找范围内的数字的和和元素数。之后,我们可以为每个查询打印平均值的向下取整的值。
输出 :
时间复杂度: O(n*q) ,其中 q 是查询的数量,n 是数组的大小。在上面的代码中,q 是 3,因为 findMean 函数被使用了 3 次。
辅助空间: O(1)
高效方法: 我们可以使用前缀和计算数字的和。prefixSum[i] 表示前 i 个元素的和。因此范围 l 到 r 中数字的和将是 prefixSum[r] – prefixSum[l-1]。范围 l 到 r 中的元素数将是 r – l + 1。因此,我们现在可以在 O(1) 时间内打印范围 l 到 r 的平均值向下取整的值。
输出:
时间复杂度: O(n+q) ,其中 q 是查询的数量,n 是数组的大小。在上面的代码中,q 是 3,因为 findMean 函数被使用了 3 次。
辅助空间: O(k),其中 k=1000005。