其他分享
首页 > 其他分享> > Leetcode 045跳跃问题II(动态规划,贪心)

Leetcode 045跳跃问题II(动态规划,贪心)

作者:互联网

地址

https://leetcode-cn.com/problems/jump-game-ii/

描述

在这里插入图片描述

思想

//在当前可达的范围内寻找下一跳可以到达的最远位置
在这里插入图片描述

代码

y总的

class Solution {
public:
    int jump(vector<int>& nums) {
        const int n = nums.size();
        vector<int> f(n);
        f[0] = 0;
        int last = 0;

        for (int i = 1; i < n; i++) {
            // 依次求 f[i] 的值。
            while (i > last + nums[last]) // 根据 i 来更新 last。
                last++;

            f[i] = f[last] + 1; // 根据 f[last] 更新 f[i]。
        }

        return f[n - 1];
    }
};

自个想的

class Solution {
public:
    int jump(vector<int>& nums) {
        //在当前可达的范围内寻找下一跳可以到达的最远位置
        int num=0,l=nums.size();
        if(l==1) return num;
        for(int i=0;i<nums.size();){
            int max=0,pos=0;
            int jump=nums[i];//在该位置可以跳跃的最大长度
            if(i+jump>=l-1) {num++;return num;}
            else num++;
            for(int j=i+1;j<=i+jump;j++){
                int jump2=nums[j];
                if(j+jump2>=l-1) {num++;return num;}
                if(j+jump2>max){
                    max=j+jump2;
                    pos=j;
                }
            }
            i=pos;
        }
        return -1;
    }
};

标签:jump,last,nums,int,II,num,return,045,Leetcode
来源: https://blog.csdn.net/qq_52934831/article/details/121613023