首页 > 其他分享 >45. 跳跃游戏 II

45. 跳跃游戏 II

时间:2023-04-28 10:23:50浏览次数:34  
标签:jump 远距离 下标 nextDistance nums int 45 II 跳跃

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:

  • 0 <= j <= nums[i]
  • i + j < n
    返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。

> 我的解法

class Solution {
public:
    int jump(vector<int>& nums) {
        int n = nums.size();
        if(n == 1) return 0;
        vector<int> path(n,1000);
        int cover = nums[0];
        int jump_index = 1;
        int res = 0;
        path[0] = 0;
        for(int i = 0;i <= cover;i++){
            cover = max(i+nums[i],cover);
            if(cover >= n-1) {
                res = i;
                break;
            }
            for(int j = i + 1;j <= cover;j++){
                if(path[j] == 1000){
                    path[j] = path[i] + 1;
                }
            }
        }
        return path[res] + 1;
    }
};

> 标准解法

class Solution {
public:
    int jump(vector<int>& nums) {
        int curDistance = 0;    // 当前覆盖的最远距离下标
        int ans = 0;            // 记录走的最大步数
        int nextDistance = 0;   // 下一步覆盖的最远距离下标
        for (int i = 0; i < nums.size() - 1; i++) { // 注意这里是小于nums.size() - 1,这是关键所在
            nextDistance = max(nums[i] + i, nextDistance); // 更新下一步覆盖的最远距离下标
            if (i == curDistance) {                 // 遇到当前覆盖的最远距离下标
                curDistance = nextDistance;         // 更新当前覆盖的最远距离下标
                ans++;
            }
        }
        return ans;
    }
};

标签:jump,远距离,下标,nextDistance,nums,int,45,II,跳跃
From: https://www.cnblogs.com/lihaoxiang/p/17361097.html

相关文章

  • ASCII码是什么--九五小庞
    ASCII(发音:,AmericanStandardCodeforInformationInterchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本延伸美国标准信息交换码则可以部分支持其他西欧语言,并等同于国际标准ISO/IEC646。ASCII由电报码发展而来。第一版标准......
  • SQLServer2005 AMD8450,3核CPU装不上sql 2005的解决办法
    中午12点开始,安装SQLServer2005,一直到晚上9点半,把网上的各个文章翻了个遍,依然没有安装上我的SQLServer2005,安装不上的症状跟网上其它人遇到的一样,可是为什么别人的就解决了,我的就不行呢```带着郁闷的心情睡觉了```夜里3点几分,起夜,想到数据库还......
  • NC50454 A Simple Problem with Integers
    题目链接题目题目描述给定数列\(a[1],a[2],\dots,a[n]\),你需要依次进行q个操作,操作有两类:1lrx:给定l,r,x,对于所有\(i\in[l,r]\),将a[i]加上x(换言之,将\(a[l],a[l+1],\dots,a[r]\)分别加上x);2lr:给定l,r,求\(\sum_{i=l}^ra[i]\)的值(换言之,求\(a[l]+a[l+1]+\dots+a......
  • P1345 [USACO5.4]奶牛的电信Telecowmunication 题解
    一、题目描述:n个点,m条边,给定起点s和终点t,求最少删去几个点后,s和t不连通。注意,s和t不能删掉。1<=n<=100,1<=m<=600; 二、解题思路:刚刚学了最大费用流,知道最大流等于最小割。但此题割的不是边,是点。我们需要将将割点转化为割边。把一个点切成两半......
  • 55. 跳跃游戏
    给定一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。>贪心解法classSolution{public:boolcanJump(vector<int>&nums){intcover=0;if(nums.size......
  • iic-2023-04-27
    1、时序构成可参见《12-IIC协议介绍2》的12:12往后的地方。 2、读写过程可参见《4分钟看懂!I2C通讯协议最简单的总线通讯!》,图片内容来自上述视频,首先需要指出的是,读数据时,发出第二次起始位+设备地址+读控制位后面没有应答信号,这个可以从立创商城英锐芯下载的AT24C02手册的“随机......
  • 122. 买卖股票的最佳时机 II
    给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后在同一天出售。返回你能获得的最大利润。>贪心解法假如第0天买入,第3天卖出,那么利润为:prices......
  • iis搭建discuz7.2 的曲折经历 y以及各种报错的处理
    环境windowsserver 2008R2  mysql 5.1.73 iis6 php5.6安装PHP解压PHP,我给的路径是C:\Users\Administrator\Desktop\php,大伙儿随意把php.ini-production改名为php.ini(用于开发环境的话,就改那个development)修改扩展路径extension_dir="./ext"启用MySQL扩展(即去......
  • 55. 跳跃游戏
    55.跳跃游戏开始想暴力递归,超时classSolution{public:boolcanJump(vector<int>&nums){//一步一步走,如果跳着没有走的快,肯定过不去//k是跳着走能够到达的最远的地方intk=0;for(inti=0;i<nums.size();i++){......
  • 排序:剑指 Offer 45. 把数组排成最小的数
    题目描述:输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。  提示:0<nums.length<=100说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导0,最后结果不需要去掉前导0......