前缀和算法:高效计算数组区间和
前缀和(Prefix Sum)是一个常用的编程技巧,用于计算一个数组中任意区间的元素和。它通过预先计算出每个位置之前的所有元素的和,然后可以在O(1)的时间复杂度内计算出任意区间的元素和。
以下是一个用Python实现的前缀和的例子:
def prefix_sum(arr):
n = len(arr)
prefix = [0] * (n + 1) # 创建一个长度为n+1的数组用于存储前缀和
for i in range(1, n + 1):
prefix[i] = prefix[i - 1] + arr[i - 1] # 计算前缀和
return prefix
arr = [1, 2, 3, 4, 5]
prefix = prefix_sum(arr)
print(prefix) # 输出:[0, 1, 3, 6, 10, 15]
# 计算任意区间的元素和
left = 1
right = 4
interval_sum = prefix[right + 1] - prefix[left] # 区间和等于右边界的前缀和减去左边界的前缀和
print(interval_sum) # 输出:9
在这个例子中,我们首先定义了一个prefix_sum函数,该函数接受一个数组作为参数,并返回一个存储了前缀和的数组。然后我们通过调用prefix_sum函数计算出了数组arr的前缀和数组prefix。最后,我们使用前缀和数组来计算了一个任意区间的元素和,左边界为1,右边界为4,得到了区间和为9。
通过使用前缀和,我们可以在O(1)的时间复杂度内计算出任意区间的元素和,而不需要每次都重新计算。这在处理大规模数据或需要频繁查询区间和的情况下非常有用。
原文地址: https://www.cveoy.top/t/topic/pc0g 著作权归作者所有。请勿转载和采集!