【leetcode】-55-跳跃游戏-动态规划/贪心算法

 

【方法一:动态规划】

    bool canJump(vector<int>& nums) {
        int n=nums.size();
        vector<bool> f(n);//f[i]表示都能够有到达第i块石头
        f[0]=true;//初始化

        for(int j=1;j<n;++j)
        {
            f[j]=false;
            for(int i=0;i<j;++i)
            {
                if(f[i]&&(nums[i]>=j-i)){
                    f[j]=true;
                    break;
                }
            }
        }
        return f[n-1];
    }

 【方法二:贪心算法】

如果i位置能到达,则更新能够到达的最远位置。一直到可以到达最后一块石头。

 bool canJump(vector<int>& nums) {
        int maxDis=0;
       for (int i = 0; i <nums.size(); i++)
    	{
            if(maxDis>=i) maxDis=max(maxDis,i+nums[i]);//如果当前位置能到达,更新最远距离
            
            if(maxDis>=nums.size()-1)return true;
	    }
        return false;
    }

猜你喜欢

转载自blog.csdn.net/qq_39328436/article/details/113093715