小编eno*_*wiz的帖子

以这样的方式填充数组,使得每个元素等于两个数的最小总和

给定一个已经有前k个元素的数组(只包含整数):a 1,a 2,.... a k. 我需要填充剩余的(n-k)元素(数组总共有n个元素). n 的值约为10 ^ 31 <= k <= n. 每个a i的值是两个数的最小和,使得这两个数的位置之和等于i. 这是伪代码(我的算法):




for i = k + 1 to n
  a[i] = max_value
  for j = 1 to (i / 2)
    a[i] = min(a[i], a[j] + a[i - j])
Run Code Online (Sandbox Code Playgroud)

时间复杂度:O(n ^ 2)

问题:还有其他方法可以更快地完成这项工作吗?
我正在寻找能够找到每个a i的值小于O(n)的任何数据结构或算法.

P/S:这是我程序中的一个程序,所以我需要尽快完成.

c++ arrays algorithm data-structures

5
推荐指数
1
解决办法
408
查看次数

标签 统计

algorithm ×1

arrays ×1

c++ ×1

data-structures ×1