题意:
给出一个步长数组nums,如果一个人站在i这个点上那么它可以向右最多走nums[i]步,问能否从最左端走到最右端。
思路:
这是一道比 http://blog.csdn.net/houserabbit/article/details/72736549 简单的题,只需要维护能走到的右端点在哪里,最后判断是不是最右端即可。
代码:
class Solution {
public:
bool canJump(vector<int> &nums) {
int n = nums.size();
if (n < 2) {
return true;
}
long long arrive = 0;
for (int i = 0; i <= arrive && i < n; ++i) {
arrive = max(arrive, (long long) nums[i] + i);
}
if (arrive < n - 1) return false;
return true;
}
};