给定一个非负整数数组,最初位于数组的第一个元素位置,数组中的每个元素代表你在该位置可以跳跃的最大长度,如何使用最少的跳跃次数到达数组的最后一个位置?...当前元素值为跳跃的最大长度,在没有任何前提支持下的最合适值就是元素最大值.
2. 在这个最大的跳跃范围内,需要选取一个合适值,保证下次跳跃能达到最大距离.
3....最大移步指针,用来查找本次跳跃范围内,指向下一次跳跃后,达到的最大距离所在元素位置;并作为下次跳跃的快指针.
按这个思路,我们一起分析下,上面数组是如何跳跃的.
1. 起始状态
2....确定好快慢指针范围,再来查找在这个范围内能跳越到的最大距离:
元素值 + 索引值 = 该元素跳跃最大索引值
array[1] + 1 = 3
Array[2] + 2 = 5
最大移步指针指向5
4....通过上述流程,可以发现当我们不能从整体上给出一个最优方案时,可以只根据当前状态给出最好选择,做出局部意义上的最优解. 这种问题求解的思路叫做贪心算法.