leetcode55.跳跃游戏C/C++

链接:

https://leetcode-cn.com/problems/jump-game/

描述:

leetcode55.跳跃游戏C/C++_第1张图片

示例和提示:

leetcode55.跳跃游戏C/C++_第2张图片

代码:

bool canJump(int* nums, int numsSize){
    if(numsSize == 1) return true;
    int a = nums[0];
    for(int i = 0;i<=a;i++)
    {
        a = fmax(a,i+nums[i]);
        if(a>= numsSize-1)
            return true;
    }
    return false;
}

代码分析:

以题目中的示例一
[2, 3, 1, 1, 4]
为例:
我们一开始在位置 0,可以跳跃的最大长度为 2,因此最远可以到达的位置被更新为 2;
我们遍历到位置 1,由于 1≤2,因此位置 1 可达。我们用 1加上它可以跳跃的最大长度3,将最远可以到达的位置更新为
4。由于4大于等于最后一个位置4,因此我们直接返回 True。

我们再来看看题目中的示例二
[3, 2, 1, 0, 4]
我们一开始在位置0,可以跳跃的最大长度为3,因此最远可以到达的位置被更新为3;
我们遍历到位置1,由于1≤3,因此位置1可达,加上它可以跳跃的最大长度2得到3,没有超过最远可以到达的位置;
位置 2、位置 3 同理,最远可以到达的位置不会被更新;
我们遍历到位置4,因为 已经到不了这个节点所以,直接返回false

你可能感兴趣的:(leetcode,牛客日常,c++,游戏,c语言)