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

检查数组中最小跳跃数算法的正确性

柴兴修
2023-03-14

我有一个算法,它基于一个问题,你需要找到到达数组末端的最小跳跃次数。这个问题是在极客中为极客提出的,他们没有线性时间算法。在我的例子中,算法是线性时间的,但我的算法会在哪个测试用例中失败?。问题的链接

链接:-http://www.geeksforgeeks.org/minimum-number-of-jumps-to-reach-end-of-a-given-array/

输入: arr[] = { 1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9}

>

现在在第二步中,我们知道元素的范围是3,因此从这一步中,我们计算该范围的最大值,从3中,我们可以选择5,8,9,这个范围的最大值是9

所以首先移动到9那就是1-

最关键的情况是,如果我们在末尾检测到零,我们什么也不做,因为我们已经到达了末尾。但是,如果在开始时或在0是该范围内向前移动的最大元素的范围内检测到零,我们将返回-1,因为我们无法进一步移动,请告诉我该算法中是否存在错误。

共有1个答案

栾瑞
2023-03-14

是的,这个算法不起作用。例子:

arr[] = {5,2,1,1,1,1,1}

您的算法将看到5,然后看到最大值2,然后转到1。也就是说:5,2,1,1,1,1=6次跳跃。

而最佳结果是: 5-

 类似资料:
  • 问题陈述:给定一个长度为N的非负整数数组A,您最初位于数组的第一个索引处。数组中的每个元素表示该位置的最大跳跃长度。返回到达最后一个索引所需的最小跳转次数。 输入:A=[2,3,1,1,4] 产出:2 说明:达到指数4的最短途径是指数0- 以下是解决方案: 我得到了上述解决方案的TLE。我无法在记忆后计算出解决方案的时间复杂度。有人能帮我估计一下上述解决方案的时间复杂度吗。

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

  • 所以...我有:int array[]={-8,2,0,5,-3,6,0,9}; 我想找到一个最小的正数(在上面的列表中是2)

  • 问题声明:给定数组:[1,0,1,0,1,1,1,1,1,0,1,1,1,0]输出:到达结束所需的最小步骤 条件: 0上的步骤是退出 我已经完成了不使用DP的情况下的使用,是否存在针对此问题的DP解决方案。 我的代码:

  • 我正在调试以下问题并发布代码。不知道代码是否正确。我目前的疑问是,是否应该一直增加(在这一行--

  • 我处理下面提供的一个可编码性问题, 斐波那契序列使用以下递归公式定义: 一只小青蛙想去河的对岸。青蛙最初位于河的一边(位置−1),想要到达另一边(位置N)。青蛙可以跳过任何距离F(K),其中F(K)是第K个斐波那契数。幸运的是,河上有许多树叶,青蛙可以在树叶之间跳跃,但只能在N号位置的岸边方向跳跃。 河上的叶子用一个由N个整数组成的数组表示。数组A的连续元素表示从0到N的连续位置− 1在河上。阵列