【发布时间】:2020-09-13 12:59:09
【问题描述】:
我正在尝试找到一种方法来遍历大小为 N 的整数数组,并将这些整数中的每一个乘以 128^((N-1) - i),其中 N 是数组的长度,而 i是整数的索引,然后将所有这些结果加在一起。
例如,[1, 2, 3, 4] 的数组输入将返回 1 * (128^3) + 2 * (128^2) + 3 * (128^1) + 4 * (128^ 0).
我的算法需要在 O(N) 时间内运行,但指数运算很昂贵,例如,2^3 需要三个运算。所以,我需要找到一种方法来在 O(1) 时间内对数组中的每个整数进行运算,只使用算术运算(-、+、*、/、%)。我能想到的最明显(不正确)的方法是将每个整数(N-i)简单地相乘,但这并不需要恒定的时间。我也在考虑通过平方来使用求幂,但这需要 log_2(N-i) 时间来对每个整数进行运算,这不是恒定的。
【问题讨论】:
标签: algorithm complexity-theory exponent