跳跃游戏

给定一个非负整数数组,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个位置。

思路:dp,用一个数组表示当前位置能够到的最大位置,如果前一个位置能够达到下一个位置才开始起跳。注意【0】这个特殊情况,注意等于号;

class Solution {
public:
bool canJump(vector<int>& nums) {
if(nums.empty()) return false;
int N=nums.size();
vector<int> dp(N,0);
dp[0]=nums[0];
if(dp[0]>=N-1) return true;
int i=1;
while(i<=N&&dp[i-1]>=i){
dp[i]=max(dp[i-1],i+nums[i]);
if(dp[i]>=N-1) return true;
++i;
}
return false;
}
};

posted @ 2019-03-19 17:26  zzas12345  阅读(134)  评论(0编辑  收藏  举报