【LeetCode】NO.45. 跳跃游戏 II (C++ & Python) [贪心算法]
题目
给你一个非负整数数组 nums ,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
你的目标是使用最少的跳跃次数到达数组的最后一个位置。
假设你总是可以到达数组的最后一个位置
思路
遍历到数组的倒数第二位!如果到最大覆盖范围还是没能到终点,这时候步长+1;
代码
class Solution {
public:
int jump(vector<int>& nums) {
int cur = 0;
int next_idx = 0;
int ans = 0;
for(int i=0;i<nums.size()-1;i++) //遍历
{
next_idx = max(nums[i]+i, next_idx); //更新最远范围
if(cur==i)
{
cur = next_idx; //遇到最远范围的时候还没到终点需要+1
ans++;
}
}
return ans;
}
};
本文来自博客园,作者:jucw,转载请注明原文链接:https://www.cnblogs.com/Jucw/p/15734146.html