问题
https://leetcode.com/problems/jump-game/
解法
贪心法:
now 表示要到达最后一个位置,至少要到达的位置。如果有位置i可以到达now则now = i;从后向前扫描如果now==0 则表示可以从0处到达最后一个位置。
class Solution {
public:
bool canJump(vector<int>& nums) {
if (nums.size()==0)
return false;
if (nums.size() ==1)
return true;
int now = nums.size()-1;
for (int i=nums.size()-2; i>=0; --i)
{
if (i+nums[i] >= now)
now = i;
}
return now==0;
}
};
nums.size()-2 注意至少要有2个元素时才可以进入for 循环。
本文介绍了一个经典的LeetCode跳远游戏问题及其贪心算法解决方案。通过从数组的末尾开始逆向遍历,确定能否从初始位置跳跃到最后一个位置。文章详细解释了如何维护一个目标位置变量,并在遍历过程中更新它,最终判断是否能成功跳跃。
741

被折叠的 条评论
为什么被折叠?



