【发布时间】:2022-06-10 04:09:25
【问题描述】:
问题是通过重复该过程M次来找到长度为N的数组的前缀和。例如
Example N=3
M=4
array = 1 2 3
output = 1 6 21
Explanation:
Step 1 prefix Sum = 1 3 6
Step 2 prefix sum = 1 4 10
Step 3 prefix sum = 1 5 15
Step 4(M) prefix sum = 1 6 21
Example 2:
N=5
M=3
array = 1 2 3 4 5
output = 1 5 15 35 70
我无法解决问题并不断超出石灰限制。我使用动态编程在 O(NM) 时间内解决它。我环顾四周,找到了以下通用数学解决方案,但我仍然无法解决它,因为我的数学不是很好理解它。有人可以以更好的时间复杂度解决它吗?
【问题讨论】:
-
如果我理解这个问题,那么你需要对数组中的任何数字求和——它并不总是 1、2、3、4、5 ......所以前 N 个自然数之和的通用公式获胜解决不了问题。对 N 和 M 是否有任何限制?
-
不,它们总是 N 个自然数,例如 1、2、3、4,......不记得确切的约束,但它在 N 是 1000 和 M 是 10^9 的范围内,因为我也求和时需要取模 10^9。
标签: algorithm math dynamic-programming prefix-sum