贪心——力扣55.跳跃游戏&&力扣45.跳跃游戏Ⅱ
Posted _BitterSweet
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪心——力扣55.跳跃游戏&&力扣45.跳跃游戏Ⅱ相关的知识,希望对你有一定的参考价值。
力扣55.跳跃游戏
题目描述
思路代码
依然是贪心的思路,考虑局部最优到整体最优,我们的目标是到达最后一个下标,是不是我们最终只要大于等于即可,那么我们就可以优先考虑跳跃所覆盖的范围,不用去明确每一步具体跳多少,我们每次移动最大跳跃步数,就更新最大的覆盖范围,最后得到最大的覆盖范围,判断是否到达终点
class Solution {
public:
bool canJump(vector<int>& nums)
{
int n = nums.size();
if(n == 1) return true;
int mostcover = 0;
for(int i = 0; i < n; i++)
{
if(i <= mostcover)
{
mostcover = max(i + nums[i], mostcover);
}
if(mostcover >= n - 1)
{
return true;
}
}
return false;
}
};
力扣45.跳跃游戏Ⅱ
题目描述
思路代码
我们还是每一步都跳到最大覆盖范围,如果没有到达终点,则步数++,采取下一步,继续跳大最大覆盖范围,如果当前覆盖距离下标不是集合终点,步数++;如果当前覆盖最远距离下标就是集合终点,部署不用++
class Solution {
public:
int jump(vector<int>& nums)
{
int n = nums.size();
if(n == 1) return 0;
int CurDistance = 0;
int res = 0;
int NextDistance = 0;
for(int i = 0; i < n; i++)
{
NextDistance = max(i + nums[i], NextDistance);
if(i == CurDistance)
{
if(CurDistance != n - 1)
{
res++;
CurDistance = NextDistance;
if(NextDistance >= n - 1) break;
}
else
break;
}
}
return res;
}
};
以上是关于贪心——力扣55.跳跃游戏&&力扣45.跳跃游戏Ⅱ的主要内容,如果未能解决你的问题,请参考以下文章