【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;
    }
};

posted @ 2021-12-26 21:16  jucw  阅读(95)  评论(0编辑  收藏  举报