LeetCode---55.跳跃游戏

题目来源:https://leetcode-cn.com/problems/jump-game/description/

题目描述:

 题目分析:这个题要先理解题目,题目中说的是:数字代表的是最大的可跳跃长度,比如数字是3,那么你跳1,2,3都行,而不是只可以跳3步。经过思考返回true有两种情况,一种是刚好跳到最后一个位置上,一种是超过最后一个位置。因为这题不需要求出每次跳的步数,只需要知道能否跳到最后。所以这两种情况其实就是一种。

算法描述:1.定义max用来存放当前能跳的最远距离。i从0开始遍历,每到一个位置都判断max的值是否大于i,如果小于i说明当前的最大步数不足以走到i位置,则直接返回false,否则,让当前i位置能走的最大步数和max比较。让max重新赋值。

代码如下:

bool canJump(int* nums, int numsSize) {
    int max=0;
    for(int i=0;i<numsSize;i++){
        if(i>max){
            return false;
        }else{
            max=max>(nums[i]+i)?max:(nums[i]+i);
        }
    }
    return true;
}

猜你喜欢

转载自blog.csdn.net/qq_39241239/article/details/82692390