首页 > 其他分享 >leetcode45-跳跃游戏 II

leetcode45-跳跃游戏 II

时间:2022-08-17 19:47:16浏览次数:65  
标签:end nums int II leetcode45 跳跃 maxPos dp

跳跃游戏 II

  • 前向dp

对于一个数i,从0到i-1进行遍历,如果在这个位置能跳跃到i,那么对i的dp值进行更新。
这种方式时间复杂度为O(n^2),效率很低

class Solution {
    public int jump(int[] nums) {
        int n = nums.length, dp[] = new int[n];
        Arrays.fill(dp, n);
        for(int i = 0; i < n; i++){
            if(i == 0)  dp[i] = 0;
            else{
                for(int j = 0; j < i; j++)
                    if(nums[j]+j >= i)  dp[i] = Math.min(dp[i], dp[j]+1);
            }
        }
        return dp[n-1];
    }
}
  • 后向dp

从前向后遍历,如果当前的位置能跳跃到最后一个位置,则直接返回dp[i]+1。否则,将所有能跳跃到的位置的dp值都进行更新,取最小值。

class Solution {
    public int jump(int[] nums) {
        int n = nums.length, dp[] = new int[n];
        Arrays.fill(dp, n);
        dp[0] = 0;
        for(int i = 0; i < n-1; i++){
            if(nums[i] + i >= n-1)  return dp[i]+1;
            else{
                for(int j = i+1; j <= nums[i]+i; j++)
                    dp[j] = Math.min(dp[j], dp[i]+1);
            }
        }
        return dp[n-1];
    }
}
  • 贪心+dp

不需要维护一个dp数组,而是已经遍历过的元素能达到的最大值maxPos和上一次跳跃的位置end。
一旦i == end,就意味着已经到了上一次跳跃的末尾,需要进行新一轮的跳跃,于是step++; end = maxPos;,跳跃到maxPos处

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

标签:end,nums,int,II,leetcode45,跳跃,maxPos,dp
From: https://www.cnblogs.com/xzh-yyds/p/16596519.html

相关文章

  • Chiitoitsu(概率DP)
    代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<map>usingnamespacestd;typedeflonglongll;constintN=1......
  • LeetCode 螺旋矩阵 II 算法题解 All In One
    LeetCode螺旋矩阵II算法题解AllInOnejs/ts生成螺旋矩阵螺旋矩阵原理图解动态赋值arr[i]//动态更新indexleti=0;while(left<=right&&t......
  • iis占用服务器内存,W3wp.exe 进程占用内存高消耗CPU近100%导致网站反应速度缓慢的解决
    iis占用服务器内存,W3wp.exe进程占用内存高消耗CPU近100%导致网站反应速度缓慢的解决方案如何降低W3WP.EXE占用的内存和CPU?结合网上的诸多建议,主要的解决办法是:a.在I......
  • 转载:Windows Server查看W3SVC IIS服务器中对应的网站日志
    W3SVC日志文件夹中序号的含义,格式就是W3SVC+网站ID如果没有自定义站点的日志路径,日志默认的路径是C:\inetpub\logs\LogFiles\基本上每个网站存放日志的文件夹名称都是以W......
  • 在IIS中部署.NET Core WebApi程序(转载)
    环境说明部署NETCore编写WebApi并部署为IIS站点,演示环境如下:VisualStudio2019(v16.8).NetCore3.1一台安装了IIS的设备Note:.NETCore3.0项目开发需要vs2019(......
  • 将WebAPI(core 3.1)部署在IIS上(转)
    使用的是VS2019社区版,WebAPI的版本是.netcore3.1,其他版本可能略有不同,请根据情况适当更改。1.打开微软.net官网,点击HostingBundle下载安装,安装好后重启电脑2.打开IIS,双......
  • 洛谷P2622 关灯问题II引发的关于DP实现形式及后效性的思考
      动态规划要求已经求解的子问题不受后续阶段的影响,即无后效性。而在这种递推的实现方式中,后面枚举的状态可能更新前面已经枚举过的状态。也就是说,这种递推的实现方式是......
  • 力扣-刷题-324. 摆动排序 II
    题目链接来源:力扣(LeetCode)链接:https://leetcode.cn/problems/wiggle-sort-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目描述给你一个......
  • 安装IIS服务(转)
    操作场景本文档以WindowsServer2012R2操作系统和WindowsServer2008操作系统为例,介绍在Windows云服务器上进行IIS角色添加与安装。操作步骤WindowsServer......
  • Max Chunks To Make Sorted II
    MaxChunksToMakeSortedIIYouaregivenanintegerarray  arr.Wesplit arr intosomenumberofchunks(i.e.,partitions),andindividuallysorteachc......