class Solution {
public:
bool canJump(vector<int>& nums) {
int n = nums.size();
vector<bool> f(n);
f[0] = 1;
for (int i = 0, end = nums[0]; i <= end; i ++) {
if (i == n - 1) return true;
end = max(end, i + nums[i]);
}
return false;
}
};
class Solution {
public:
// DP
/*
bool canJump(vector<int>& nums) {
int pos = 0;
int n = nums.size();
for (int i = 0; i <= pos; i ++) {
if (i + nums[i] >= n - 1) {
return 1;
}
else {
pos = max(pos, i + nums[i]);
}
}
return false;
}
*/
// 贪心
bool canJump(vector<int>& nums) {
int cnt = 0;
for (int i = 0; i <= cnt && i < nums.size(); i ++) {
cnt = max(i + nums[i], cnt);
if (cnt >= nums.size() - 1) return true;
}
return false;
}
};
// 2024-03-11 贪心做法