给定一个非负整数数组,最初位于数组的第一个元素位置,数组中的每个元素代表你在该位置可以跳跃的最大长度,如何使用最少的跳跃次数到达数组的最后一个位置?...例如:数组array为:{2, 2, 3, 1, 2, 2, 1}
它可以3次跳完,
第一次,从起始位置2(array[0])跳到元素3(array[2]);
第二次,跳到元素2(array[5]);...快指针,指向当前元素能跳跃到的最大位置,quickIndex=array[slowIndex] + slowIndex;并作为下次的慢指针....最大移步指针,用来查找本次跳跃范围内,指向下一次跳跃后,达到的最大距离所在元素位置;并作为下次跳跃的快指针.
按这个思路,我们一起分析下,上面数组是如何跳跃的.
1. 起始状态
2....确定好下一次能跳到的最大距离,重新调整快慢指针.
5. 再次确定最大移步指针
6. 移步指针已经指向数组结尾,跳跃结束.算上快慢指针的第一次合理定位,一共需要3次跳跃就能到达数组尾部.