任务
给定一个非负整数数组a
,请确定从数组0处“跳出”数组所需的向右跳转的最小次数,从位置0开始,或者如果不可能,则返回零/空值。
从索引的跳转i
定义为最多将数组索引增加a[i]
。
甲跳跃外面是一个跳转,其中从跳转结果的索引i
是外的边界为阵列,所以对于基于1的索引i>length(a)
,以及用于基于0的索引,i>=length(a)
。
例子1
考虑Array = [4,0,2,0,2,0]
:
Array[0] = 4 -> You can jump 4 field
Array[1] = 0 -> You can jump 0 field
Array[2] = 2 -> You can jump 2 field
Array[3] = 0 -> You can jump 0 field
Array[4] = 2 -> You can jump 2 field
Array[5] = 0 -> You can jump 0 field
通过“跳跃”越界的最短路径为length 2
:
我们可以从0->2->4->outside
有长度3
但0->4->outside
有长度的地方跳下来,2
所以我们返回2
。
例子2
假设Array=[0,1,2,3,2,1]
:
Array[0] = 0 -> You can jump 0 fields
Array[1] = 1 -> You can jump 1 field
Array[2] = 2 -> You can jump 2 field
Array[3] = 3 -> You can jump 3 field
Array[4] = 2 -> You can jump 2 field
Array[5] = 1 -> You can jump 1 field
在这种情况下,不可能跳出数组,因此我们应该返回零/空值或任何不确定的值,例如∞
。
例子3
假设Array=[4]
:
Array[0] = 4 -> You can jump 4 field
我们可以直接从数组外部的索引0跳转,仅需一次跳转,所以我们返回1
。
编辑:
由于对返回值有多个疑问:∞
如果没有机会逃脱,则返回完全有效。因为,如果有机会,我们可以定义该数字。
这是代码高尔夫球,因此以字节为单位的最短代码胜出!
[2, 3, 1, 1]
。