leetcode 55 Jump Game

104 阅读1分钟

leetcode 55

策略是从后往前反推,每次取离终点最远的,不断移动fIndex指针直到0,取最远的是因为越前面的步骤可选的越多,直接取最远的可以减小计算。

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int len=nums.size();
        int fIndex=len-1;
        int dis[len];
        for(int i=0;i<len;i++)
            dis[i]=0;
        bool breakFlag=true;
        while(fIndex!=0){
            for(int i=fIndex-1;i>=0;i--){
                breakFlag=true;
                dis[i]=fIndex-i;
                if(dis[i]<=nums[i]){
                    fIndex=i;
                    breakFlag=false;
                }
            }
            if(breakFlag==true)
                return false;
        }
        return true;
    }
};