假设我有一个由 n 个元素组成的数组。
1 2 3 4 5 6 ... n
我需要找到一种方法来使用 C++ 提取此数组中连续元素的总和。像这样:
1, 2, 3,...n, 1+2, 2+3, 3+4,...(n-1)+n, 1+2+3, 2+3+4,...(n-2)+(n-1)+n,...1+2+3...n
到目前为止,我发现我需要通过在每次运行时求和一定数量的元素来遍历这个数组。我不确定是否可以实现我上面解释的算法。可能有更好的解决方案,但这是我能想到的最好的解决方案。
原文由 harbinger 发布,翻译遵循 CC BY-SA 4.0 许可协议
让我们检查包含 4 个元素的案例:
如您所见,N sum 数组的每个部分的大小都比原始数组小 (N-1)。所以你需要大小的目标数组: N + (N-1) + (N-2) + … 1 - 这是 N*(1+N)/2
见 ideone 上的测试