益智跳跃游戏复杂性



我的问题针对这里提出的问题:面试谜题:跳跃游戏

最重要的答案是它在O(n)时间内运行。它说它可以做这个

因为每个元素只需要考虑一次(可以跳过第二次考虑的元素)

然而,仅仅检查我们是否已经考虑了一个元素,每个元素就需要一个恒定的时间,所以它应该需要O(n^2),对吧?O(n)考虑每个新元素,O(n)排除我们已经考虑过的元素。为什么不是这样?

您不需要检查是否已经考虑了某个特定元素,只需要跟踪已经检查的索引,以及到该点为止数组的最高v(除了刚才跳到的那个)。

然后您可以从那里继续检查,将每个新元素与之前的最大进行比较

最新更新