【LeetCode】113.Jump Game

题目描述(Medium)

Given an array of non-negative integers, you are initially positioned at the first index of the array.

Each element in the array represents your maximum jump length at that position.

Determine if you are able to reach the last index.

题目链接

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

Example 1:

Input: [2,3,1,1,4]
Output: true
Explanation: Jump 1 step from index 0 to 1, then 3 steps to the last index.

Example 2:

Input: [3,2,1,0,4]
Output: false
Explanation: You will always arrive at index 3 no matter what. Its maximum
             jump length is 0, which makes it impossible to reach the last index.

算法分析

由于每个点最多可以跳A[i]步,也可以跳0或者1步,因此如果能跳到最后一位,说明每一位都可以到达。那么只需要计算出每个点所能到达的最远处,如果最远处超过最后一位,则说明可以到达。

提交代码:

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int reach = 1;
        
        for (int i = 0; i < reach && reach < nums.size(); ++i) 
            reach = max(reach, nums[i] + i + 1);

        return reach >= nums.size();
    }
};

猜你喜欢

转载自blog.csdn.net/ansizhong9191/article/details/83386083