目录
题目:
代码(首刷自解 2024年2月9日):
class Solution {
public:
bool canJump(vector<int>& nums) {
int noz = 0;
for (int i = nums.size() - 2; i >= 0; --i) {
if (nums[i] == 0) {
noz++;
continue;
} else {
if (nums[i] > noz) noz = 0;
else {
noz++;
continue;
}
}
}
return noz == 0 ? true : false;
}
};
代码(二刷自解 2024年3月9日 贪心 6min)
class Solution {
public:
bool canJump(vector<int>& nums) {
// 倒序遍历,记录index,若index - i > nums[i] index = i
int n = nums.size();
int index = n - 1;
for (int i = n - 2; i >= 0; --i) {
if (nums[i] >= index - i) {
index = i;
}
}
return index == 0;
}
};
代码(三刷字节 2024年6月5日 贪心 go)
// 倒着统计,局部解是存在任何一个下表能到达最后一个下表,然后求子问题
func canJump(nums []int) bool {
index := len(nums) - 1
for i := len(nums) - 1; i >= 0; i-- {
if i + nums[i] >= index {
index = i
}
}
return index == 0
}