美文网首页
LeetCode 第45题:跳跃游戏 II

LeetCode 第45题:跳跃游戏 II

作者: 放开那个BUG | 来源:发表于2020-11-25 21:04 被阅读0次

1、前言

题目描述

2、思路

1⃣️ 动态规划:
定义 dp[i] 表示到 i 位置的最小步骤。转移方程为:dp[i] = max {dp[i], dp[j] + 1}

2⃣️ 贪心:
贪心的思路跟跳跃游戏的思路差不多。

3、代码

动态规划:

public class Jump {

    public int jump(int[] nums) {
        int n = nums.length;
        int[] dp = new int[n];

        for(int i = 0; i < n; i++){
            dp[i] = i;
        }

        for(int i = 1; i < n; i++){
            for(int j = 0; j <= i; j++){
                if(j + nums[j] >= i){
                    dp[i] = Math.min(dp[i], dp[j] + 1);
                }
            }
        }

        return dp[n - 1];
    }

    public static void main(String[] args) {
        System.out.println(new Jump().jump(new int[]{2,3,0,1,4}));
    }
}

贪心:

class Solution {
    public int jump(int[] nums) {
        int n = nums.length;
        int fastSteps = 0, end = 0, jumps = 0;
        for(int i = 0; i < n - 1; i++){
            fastSteps = Math.max(fastSteps, i + nums[i]);
            if(i == end){
                jumps++;
                end = fastSteps;
            }
        }

        return jumps;
    }
}

相关文章

网友评论

      本文标题:LeetCode 第45题:跳跃游戏 II

      本文链接:https://www.haomeiwen.com/subject/zrtbiktx.html