每个节点上标明从这个点跳到其他点的最大距离,最后问你最后能不能跳到最后一个点。
更新从这个点到能跳的最大距离,之间的点明显也可以跳。依次扫描这些点,如果遍历到这个点但是能够达到的点并没有会到这个点,那么就不可能走到这个点,那么就返回false。如果能扫描到最后一个点,那么就返回true。
class Solution {
public:
bool canJump(vector<int>& nums) {
int target=0;
for(int ii=0;ii<nums.size();ii++){
if(ii>target)return false;
target=target<ii+nums[ii]?ii+nums[ii]:target;
}
return true;
}
};