备注说明:由于leetcode的测试用例并不能保证覆盖所有情况,因此,若代码有不当之处欢迎各位指正,不胜感激。
leetcode 55.跳跃游戏
Answers 1:
class Solution {
public:
bool canJump(vector<int>& nums) {
//题解思路:
// 遍历数组,但是遍历的范围是由数组位置上的值决定的
//使用一个值ret不断的记录更新当前可跳跃的最远距离,在这段距离内通过当前位置和该位置上标示
//的值进行判断是否可以到达数组的末尾
int length = nums.size();
if(length <= 1)
return true;
int ret = 0;
//end是用来记录遍历该数组的范围
//这里的length仅仅是用来做临时赋值用的,没有其他特殊含义,因为这个值后面会不断的进行更改
int end = length;
for(int i=0;i<=end;i++){
//ret用来记录当前可跳跃的最远距离
ret = max(ret, i + nums[i]);
end = ret;
//判断当前可跳跃的最远距离是否可以到达数组末尾
if(ret >= length - 1)
return true;
//ret<1说明在还没有到到数组末尾的情况下不能向前跳跃了
if(ret < 1)
return false;
}
return false;
}
};