algorithm - 这可以用线性时间复杂度解决吗?

标签 algorithm dynamic-programming

给定一个包含 N 个整数的数组(元素为正数或 -1)和另一个整数 M
对于每个 1 <= i <= N,我们可以跳转到数组的 i + 1, i + 2, .. i + M 索引处。从索引 1 开始,有一个线性 O(N) 算法可以找到最小成本以及到达第 N 索引的路径。其中成本是从 1 到 N 的路径中所有元素的总和。我有一个复杂度为 O(N*M) 的动态规划解决方案。
注意:如果 A[i] 为 -1,则表示我们无法降落在第 i 个索引上。

最佳答案

如果我对您的问题的理解正确,A* 可能会为您提供最佳的运行时间。对于每个 ii+1 到 i+M 将是子节点,h 将是从 iN 的成本,假设每个后续节点的成本都是 1(例如,如果 N=11 M=4 然后 h=3 for i=2,因为那将是到达最终索引所需的最小跳跃次数) .

关于algorithm - 这可以用线性时间复杂度解决吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32512831/

相关文章:

c - 大数阶乘模大质数

algorithm - 动态堆栈的摊销分析

python - python列表中最常见的子列表

字符串距离,仅换位

c# - 在类中展平数组的动态方法?

java - 找零所需的最大硬币数量

algorithm - 按顺时针/逆时针顺序对一组 3-D 点进行排序

ruby-on-rails - Ruby on Rails 中最长的回文

java - 缩短执行时间

algorithm - 使用动态规划进行插值