题目:
思路:每一步跳跃的长度都只有一个范围,不是固定的长度,这无疑增加了题目的难度,难道要每一种可能的跳法都尝试一下吗?不不 那就太复杂了
找出可到达的点,更新他们能到达的最远长度,遍历所有点,只要其中一点无法到达,则为false
代码:
class Solution {
public:
bool canJump(vector<int>& nums) {
int k = 0;//记录能到达的最远点
for (int i = 0; i < nums.size(); i++) {
if (i > k) return false;//走不到某点
k = max(k, i + nums[i]);//更新,保证是能到达的最远点
}
return true;
}
};