我有一个算法,它基于一个问题,您需要找到到达数组末尾的最小跳转次数。这个问题是在极客中被问到极客的,在我的情况下他们没有线性时间算法算法是在线性时间中,但是对于哪个测试用例,我的算法会失败?.问题的链接
链接:- 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}
从第一个元素开始,我们知道元素的最大范围是 1,因此我们只能向前移动一步,所以从 1->3
现在在第二步中,我们知道元素的范围是 3,因此从该步骤我们计算该范围的最大值,因此我们可以从 3 中选择 5、8、9,并且该范围内的最大值为 9
所以首先移动到 9,即 1->3->9,然后从 9 移动到数组的末尾,因为我们知道九步足以到达末尾。
极端情况是,如果我们在末尾检测到零,我们什么也不做,因为我们已经到达了末尾。但是如果在开始时检测到零,或者在 0 是该范围内向前移动的最大元素的范围内检测到零,我们将返回a -1,因为我们无法继续前进,请告诉我此算法中是否存在错误。