Note:
是我不会的动态规划了
就是首先明确,如果能跳到当前的位置,那么他前面的位置肯定是可以跳到的,因为肯定是从某个位置跳过来的,少跳点就是前面的位置
那么每次判断一下从当前位置能跳的最远的位置,和从上一跳能跳到的最远位置,取个max
如果过程中,能跳到的最远位置小于当前下标了, 也就意味着当前下标的位置跳不到了,就返回false
代码如下:
class Solution {
public:
bool canJump(vector<int>& nums) {
int last = 0;
for(int i = 0; i < nums.size(); i ++){
if(last < i) return false;
last = max(last, i + nums[i]);
}
return true;
}
};