LeetCode HOT100 - 跳跃游戏
感觉也不完全像贪心
核心是一个结论,如果能到达 x ,那么小于 x 的一定能达到
这是因为我们每次是可以任意选择跳跃的格数的
因为每次是向后跳,所以这种题如果逆序做反而比较复杂,就好像树要知道父节点的信息一样
知道了上面的结论之后那我们每次就是维护当前能够达到的最远的距离,如果小于这个距离那我们就能到达并进一步扩展,否则就说明没法到达
class Solution {
public:
bool canJump(vector<int>& a) {
int n = a.size();
int x = 0;
for (int i = 0; i < n; i++) {
if (i > x) {
return false;
}
x = max(i + a[i], x);
}
return true;
}
};

浙公网安备 33010602011771号