C++ 数组中小于O(n)的所有元素之和

C++ 数组中小于O(n)的所有元素之和,c++,arrays,C++,Arrays,我尝试在循环中添加所有偶数位和奇数位,然后将两者相加,以获得最终答案,使复杂性为o(n/2),但我需要一种更好的方法您可以管理数组并在发生更改时更新总和。这会将时间转移到修改操作,从技术上讲,您可以在零时间内计算(或不计算)和。在一般情况下,如果您只知道有一个n个元素的数组,则不可能在少于O(n)的时间内计算所有元素的和 但是,如果数组中的元素遵循一种模式,则可能会有一个更快的数学公式 如果您知道在构建数组时需要计算数组的和,那么可以在构建数组时计算和,但这仍然需要O(n)个时间,只是在代码中的

我尝试在循环中添加所有偶数位和奇数位,然后将两者相加,以获得最终答案,使复杂性为o(n/2),但我需要一种更好的方法

您可以管理数组并在发生更改时更新总和。这会将时间转移到修改操作,从技术上讲,您可以在零时间内计算(或不计算)和。

在一般情况下,如果您只知道有一个n个元素的数组,则不可能在少于O(n)的时间内计算所有元素的和

但是,如果数组中的元素遵循一种模式,则可能会有一个更快的数学公式

如果您知道在构建数组时需要计算数组的和,那么可以在构建数组时计算和,但这仍然需要O(n)个时间,只是在代码中的不同点


一般来说,某些事情不能比O(n)更快完成。如果一个结果取决于n个事物的值,而你对其中的值一无所知,那么,如果不至少查看所有n个事物的值,它就无法计算,这需要O(n)时间。

你将其设为2*O(n/2),这仍然是O(n)。如果必须在一个数组中添加所有元素,是什么让您认为可以在不实际查看数组中的每个元素的情况下进行添加?你有没有告诉我们关于实际存储的数字的其他信息(比如前N个素数,或者可能存在快捷方式的地方)你想要的东西不能比线性时间快是的,我知道,我没能得到更好的结果approach@i_am_jorf这是在De shaw的访谈中问到的,你可能在考虑并行性,但这与时间复杂性不太吻合。