这道题感觉应该是简单难度
class Solution {
public:
bool canJump(vector<int>& nums) {
int n=nums.size();
int dp[n+1];
memset(dp,0,sizeof(dp));
dp[0]=1;
for(int i=1;i<=n;++i)
{
if (dp[i-1]>=i)
dp[i]=max(dp[i-1],i+nums[i-1]);
else
dp[i]=dp[i-1];
}
return dp[n]>=n;
}
};
当然也可以优化下空间
class Solution {
public:
bool canJump(vector<int>& nums) {
int n=nums.size(),res=1;
for(int i=1;i<n;++i)
if (res>=i)
res=max(res,i+nums[i-1]);
return res>=n;
}
};
看到有在循环中间判断返回的,属实不错。