Leetcode 55 跳跃游戏

class Solution {
public:
    bool canJump(vector& nums) {
        //肯定可以用回溯来做
        //
        if (nums.size() == 1) return true; //如果只有一个数据,就直接true
        int maxStep = 0 + nums[0]; //初始化最长能到位置
        for (int i = 0; i < nums.size() - 1; ++i) {
            if (maxStep >= nums.size() - 1) return true; //如果步数已经超过最后,就保证我们能够到最后
            if (nums[i] == 0 && maxStep <= i) return false; //如果我遇见零了,而且我最长步数还不能跨越,就返回false
            if (nums[i] != 0) maxStep = max(i + nums[i],maxStep); //更新能够跨越到的最远的index

        }
        return true;
    }
};

你可能感兴趣的:(c++,leetcode)