Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 是否有可能在O(n)时间内获得所有相邻子阵列的总和?_Algorithm_Data Structures_Time Complexity - Fatal编程技术网

Algorithm 是否有可能在O(n)时间内获得所有相邻子阵列的总和?

Algorithm 是否有可能在O(n)时间内获得所有相邻子阵列的总和?,algorithm,data-structures,time-complexity,Algorithm,Data Structures,Time Complexity,作为我正在解决的一个更大问题的一部分,我很好奇在线性时间内是否有可能 {a_0, a_1, ..., a_n-1} 生成映射的步骤 f(i,j): sum of elements over range [i,j) for all i,j in {0, 1, ..., n - 1} e、 g 虽然不能在线性时间内生成O(n2)个数量的数据,但可以在线性时间内构建一个数据结构,让您计算O(1)中的f(x,y) 为此,您需要构建一个数组s,使si表示从零到i的a之和,包括两端 您可以通过将s[0]

作为我正在解决的一个更大问题的一部分,我很好奇在线性时间内是否有可能

{a_0, a_1, ..., a_n-1}
生成映射的步骤

f(i,j): sum of elements over range [i,j) for all i,j in {0, 1, ..., n - 1}
e、 g


虽然不能在线性时间内生成O(n2)个数量的数据,但可以在线性时间内构建一个数据结构,让您计算O(1)中的
f(x,y)

为此,您需要构建一个数组
s
,使si表示从零到
i
a
之和,包括两端

您可以通过将
s[0]=a[0]
设置,然后将
s[i]=s[i-1]+a[i]
设置为高于零的每个
i
来构建部分和数组

使用部分和数组可以计算

f(x,y) = s[y] - (x==0 ? 0 : s[x-1])

这可以在没有任何辅助数据结构的情况下完成。@A.Mashreghi这在很大程度上取决于您所说的“这”是什么意思。
f(x,y) = s[y] - (x==0 ? 0 : s[x-1])