class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型vector
     * @return bool布尔型
     */
    bool can_jump(vector<int>& nums) {
        // write code here
        int n = nums.size();
        int sum = 0;
        for (int i = 0; i < n; ++i) {
            if (sum < i)return false;
            sum = max(sum, i + nums[i]);
            if (sum >= n - 1)
                return true;
        }
        return false;
    }
};

一、题目考察的知识点

贪心

二、题目解答方法的文字分析

依次遍历,判断每个位置是否能够到达终点,记录一下每个位置所能跳的最远距离,最远距离就是max(sum, i + nums[i]),在遍历的过程中判断一下看是否能跳到终点,如果可以就行

三、本题解析所用的编程语言

c++