前缀和时间复杂度

时间:2014-01-09 23:23:10

标签: complexity-theory time-complexity

我正在阅读this,这是最后一部分的练习。

我对时间复杂性不熟悉。

第一个解决方案说,机器人将从pm - pp0m方向移动sums = [] for left in 0..m sums[left] = 0 for right in 0..(m-left) sums[left] += A[k - left + right] || 0 A[k - left + right] = 0 次,向A向另一个方向移动对我来说这是:

k

O(m + m+(m-1)+(m-2)+...+3+2+1) | ----------------------- | | because because the inner loop first loop O(m + (m*(m+1))/2) O(m + (m*(m+1))/2) O(m^2) ? 是输入数组,O(n*m)是初始位置,即给定的常量。

据我所知,复杂性将是:

{{1}}

我的错误是什么?

此问题的解决方案表明复杂性为{{1}},您能解释一下原因吗?

1 个答案:

答案 0 :(得分:0)

the goal is to calculate the maximum sum that the robot can collect in m moves.

有了这个,我理解算法将是这样的:

max=0;
for i in 1..n
    for j in 1..m
        sum+=A[i]
    end loop;
    if sum>max then 
        max=sum;
    end if;
    sum=0;
end loop;

这是一个O(n * m)问题(如果我理解正确的话)