LeetCode55——Jump Game
题意:
跟之前 LeetCode45——Jump Game II相同的思路。
我们考虑一个问题:
什么时候这个游戏他玩不下去了呢?
那就没办法越过 value 为 0 的点时。
如果没法越过value为0的点,那么我们最大能到的地方就value为0的这个位置。
换句话说,当我们当前所在的位置nums[curIndex]==0时,那么我们将无法前进,也就意味着下一个位置nextIndex将不会增加。
所以,我们在循环中做一个返回false的条件判断 curIndex==nextIndex即可。
代码:
class Solution {
public:
bool canJump(vector<int>& nums) {
int endIndex = nums.size()-1;
int curIndex = 0;
int nextIndex = 0;
int i=0;
while( i < nums.size())
{
if (curIndex >= endIndex)
return true;
while (i <= curIndex)
{
nextIndex = max(nextIndex, i + nums[i]);
i++;
}
if (curIndex == nextIndex)//说明已经停滞不前了
return false;
curIndex = nextIndex;
}
}
};