当前位置: 首页 > 知识库问答 >
问题:

最小化跳跃次数的递归解的时间复杂度

景康安
2023-03-14

在Geeks for Geeks中分析了以下问题:

给定一个整数数组,其中每个元素表示可以从该元素向前执行的最大步数。编写一个函数,返回到达数组末尾(从第一个元素开始)的最小跳转次数。如果元素为0,则它们无法通过该元素。如果无法到达endpoint,则返回-1。

这个问题的递归解决方案是递归当前元素的每一个可能的步骤,并返回最小跳跃。因此,如果数组的大小是N,那么对于第一个元素,我们有N-1步骤(选择)递归(包括递归第二个元素),然后对于第二个元素,我们有N-2递归步骤(包括递归第三个元素)...等等。所以直觉上,时间复杂度应该是(N-1)(N-2)(N-3)......1,也就是N-1!O(N!)大O符号。

但是GFG的时间复杂度是:

时间复杂度:O(n^n)
从元素移动的方式最多有n种。所以最大步数可以是N^N,所以时间复杂度的上界是O(N^N)

我知道我错的可能性很大,但我错在哪里呢?

暂时还没有答案

 类似资料:
  • 下面是寻找最小跳跃次数的算法谜题。发布了详细的问题声明和两个代码版本来解决这个问题。我做了测试,似乎两个版本都可以工作,我的第二个版本是版本一代码的优化版本,这使得我从开始,而不是持续增加,这可以通过不迭代所有的插槽来节省时间数组。 我的问题是,想知道我的第二个版本代码是否100%正确?如果有人发现任何逻辑问题,请指出。 问题陈述 给定一个非负整数数组,您最初位于数组的第一个索引处。 数组中的每个

  • 我在GeekforGeekshttps://www.geeksforgeeks.org/minimum-number-of-jumps-to-reach-end-of-a-given-array/中检查“到达终点的最小跳跃次数”问题。我对这里提到的时间复杂度感到困惑,它是O(n^n)。 如果我看到上面的代码块,minJumps(arr,I,h)递归调用是从I=l1调用的。所以在每个递归步骤中,l(

  • 我试图测试自己理解递归的能力,所以我给自己一个任务,在递归中做跳跃游戏练习 给定一个非负整数数组,您最初位于数组的第一个索引处。数组中的每个元素代表该位置的最大跳转长度。你的目标是在最小的跳跃次数内达到最后一个指数。 https://leetcode.com/problems/jump-game-ii/ 我试图修改这部分代码,但它没有出现在调试器上,因此我没有真正看到这部分代码中的问题 如果有人能

  • 顺便说一句,我试图解决时间复杂性,我找到了O(2^n)。正确吗?

  • 我在理解算法的时间复杂性方面有问题。 让我们举第一个例子,用这个算法在二叉搜索树中进行搜索: 那么,如何计算这个时间复杂度呢? null

  • 我有一个“使用递归到达数组末尾的最小跳跃次数”的代码。但我无法打印序列。(vector vec中没有可打印的内容) 如有任何帮助,将不胜感激。 说明: 我想以最小跳跃从数组的第一个元素(即2)到达最后一个元素(即4) 跳转的方式: 第一个元素是2。这意味着我最多可以在阵列中进行2次跳跃。如果我跳第一步,那么我可以跳到第二个元素(即3),或者如果我跳第二步,那么我可以跳到第三个元素(即1) 第二个元