思路:贪心
优先跳下一跳能跳更远的位置: pos到pos+nums[pos]中间的最大值。
class Solution {
public:
bool canJump(vector<int>& nums) {
int pos = 0, n = nums.size(), maxLen = nums[0]; //
while (maxLen < n && pos <= maxLen) { //
maxLen = max(maxLen, pos + nums[pos]);
pos++;
}
return maxLen >= n - 1;
}
};
细节:
1:maxLen初始化为nums[0]
2:当pos <= maxLen还能继续跳。