在下标为i处能跳到的最远地方是i+num[i],整个跳跃过程能跳到的最远地方是reach.
最大下标是numslen -1,如果reach >= numslen-1,说明可以跳到,否则就跳不到。
每到一个位置就要更新reach,并检查是否可以跳到最后一格
#include<stdbool.h>
bool canJump(int* nums, int numsLen ) {
int reach = 0;
for(int i = 0; i < numsLen; i++){
if(reach < i)
return false;
if(reach >= numsLen-1)
return true;
reach = reach > i + nums[i] ? reach : i+nums[i];
}
return true;
}

京公网安备 11010502036488号