问题描述 链接到标题

55.跳跃游戏

解题思路 链接到标题

从后向前遍历,只要nums[j]能由nums[j - 1]或者更前面的点跳到,那么终点就从nums[j]变成nums[j - 1]或更前面的点。

代码 链接到标题

#include <vector>
using std::vector;
class Solution {
  public:
    bool canJump(vector<int> &nums) {
        int r = nums.size() - 1;
        for (int i = nums.size() - 2; i >= 0; i--) {
            while (i >= 0 && nums[i] + i >= r) {
                r = i;
                i--;
            }
        }
        if (r != 0)
            return false;
        else
            return true;
    }
};