力扣 45. 跳跃游戏 II

news2024/11/14 18:28:33

题目来源:https://leetcode.cn/problems/jump-game-ii/description/

 C++题解1:因为每一步都要能走到下一个更远的地方,就比如 [2,3,1,1,4],第一步虽然可以到索引2的位置,但是到索引1的位置下一步可以走更远。所以需要记录当前能到的最大范围,也要更新下一步能到的最大范围。确定走下一步时,count要更新。

class Solution {
public:
    int jump(vector<int>& nums) {
        int len = nums.size();
        if(len == 1) return 0;
        int ind = nums[0], nextind = 0;
        int count = 0;
        for(int i = 0; (i < len); i++){
            if(ind >= len-1) {count++; break;}
            int j = i;
            for(; (j <= ind) && (j < len); j++){  // 当前步能走的范围
                nextind = max(nextind, nums[j] + j);  //  更新下一步能走的范围
            }
            i = j - 1;  // 更新下一步的开始落脚点
            ind = nextind; //  更新当前步能走的范围
            count++;  // 确定走下一步
        }
        return count;
    }
};

C++题解2(来源代码随想录):每一步都更新下一步能走的最大范围,当索引 i 到达当前最大范围,说明需要走下一步,步数加1,当前覆盖最大范围更新。

class Solution {
public:
    int jump(vector<int>& nums) {
        if (nums.size() == 1) return 0;
        int curDistance = 0;    // 当前覆盖最远距离下标
        int ans = 0;            // 记录走的最大步数
        int nextDistance = 0;   // 下一步覆盖最远距离下标
        for (int i = 0; i < nums.size(); i++) {
            nextDistance = max(nums[i] + i, nextDistance);  // 更新下一步覆盖最远距离下标
            if (i == curDistance) {                         // 遇到当前覆盖最远距离下标
                ans++;                                  // 需要走下一步
                curDistance = nextDistance;             // 更新当前覆盖最远距离下标(相当于加油了)
                if (nextDistance >= nums.size() - 1) break;  // 当前覆盖最远距到达集合终点,不用做ans++操作了,直接结束
            }
        }
        return ans;
    }
};

C++题解3(来源代码随想录):上面的简化版。

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

贪心算法真的又巧又难。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/759277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工厂方法模式详解

文章目录 前言一、工厂方法模式的定义二、举个例子三、工厂方法模式的缺点总结 前言 工厂方法模式是应用比较广泛的一种设计模式&#xff0c;它相对于简单工厂模式进行了一些优化&#xff0c;如果再增加一个具体产品不用修改代码&#xff0c;也不会违反开闭原则。 一、工厂方法…

Spring 6【什么是Spring 6、Spring框架介绍 、Spring IoC/DI 详解 】(一)-全面详解(学习总结---从入门到深化)

目录 一、Spring 6 二、Spring框架介绍 三、Spring IoC/DI 详解 一、Spring 6 1. 为什么要学习Spring 6 Spring 作为 Java程序员必会武功&#xff0c;无论是Spring的哪个版本&#xff0c;至少需要会一版本。再此基础上不会一套 组合拳SSM或SSH&#xff0c;出门都不好意思…

DAO(Data Access Object)

ProductDAO.java Search.java (Servlet) Compile Tomcat http://localhost:8080/book/chapter15/search.jsp Insert.java Compile http://localhost:8080/book/chapter15/insert.jsp

介绍用户协议报UDP

作者&#xff1a;爱塔居 专栏&#xff1a;计算机网络 文章目录 目录 文章目录 一、UDP概述 二、UDP的首部格式 一、UDP概述 用户数据报协议UDP只是在IP的数据报服务之上增加了很少一点的功能&#xff1a;复用和分用的功能以及差错检测的功能。 重点要记住UDP的主要特点&am…

JDK 下载 华为云镜像站 地址

通常去 Oracle 官网下载 JDK&#xff0c;速度很慢而且需要账号登入 Oracle 官网下载地址 https://www.oracle.com/cn/java/technologies/downloads/archive/ JDK 下载 华为云镜像站 地址 https://repo.huaweicloud.com/java/jdk/ 我们下期见&#xff0c;拜拜&#xff01;

C++程序生成文件

文章目录 VS2019 Debug 模式VS2019 Release 模式exe连接动态库和静态库的流程 VS2019 Debug 模式 在Visual Studio的Debug模式下运行程序时&#xff0c;会生成以下文件&#xff1a; 可执行文件&#xff08;.exe&#xff09;&#xff1a;生成的可执行文件&#xff08;.exe&#…

深度学习常用激活函数总结

激活函数的特点 非线性。引入非线性能提升模型的表达能力可微分。如果激活函数不可微&#xff0c;那就无法使用梯度下降方法更新参数非饱和性。饱和指在某些区间上激活函数的梯度接近于零&#xff0c;使参数无法更新取值范围有界。这样可以使网络更稳定&#xff0c;即使有很大…

dede tag不以关键词作为url以数字作为url方法修改

dede tag不以关键词作为url以数字作为url方法修改 打开/include/taglib/tag.lib.php 查找以下代码&#xff1a; $row[link] $cfg_cmsurl."/tags.php?/".urlencode($row[keyword])."/"; 替换为&#xff1a; $row[link] $cfg_cmsurl."/tags.php?/&q…

RoPE旋转位置编码图形化理解

很多博文用公式描述RoPE的作用&#xff0c;看来看去还是似懂非懂&#xff0c;本文用图形的方式形象化的展示RoPE的作用&#xff1b; 首先&#xff0c;RoPE的核心思想是通过绝对位置编码的方式实现相对位置编码&#xff0c;本文主要围绕下图进行介绍&#xff1b; 假设一个序列…

第二章 Android 基础--开发基础

文章目录 1.使用真机调试运行2.Android开发涉及的编程语言3.工程目录结构4.编译配置文件 build.gradle5.清单文件6.界面显示与逻辑处理7.Activity创建与跳转8.练习题 本专栏主要在B站学习视频&#xff1a; B站Android视频链接 本视频范围&#xff1a;P9—P16 工程结构、设计规…

redis数据类型和数据结构你了解吗 学习总结篇!

大家好&#xff0c;我是三叔&#xff0c;很高兴这期又和大家见面了&#xff0c;一个奋斗在互联网的打工人。 这期给大家讲一下关于 Redis 数据类型和数据结构的区别&#xff0c;很多读者包括笔者自己&#xff0c;早期也是傻傻分不清。备注&#xff1a;部分图片借鉴小林哥&…

计数排序

计数排序 排序步骤 1、以最大值和最小值的差值加一为长度创建一个新数组 2、将索引为0对应最小值&#xff0c;索引为1对应最小值1&#xff0c;索引为2对应最小值2&#xff0c;以此类推&#xff0c;将索引对应最小值到最大值之间所有的值 3、遍历一遍&#xff0c;遇到一个数字…

hcip第一天——复习静态路由习题

目录 1.绘制拓扑及划分网段 2.配置 1.lsw1 2.lsw2 3.R1 4.R2 5.R3 6.R4 7.R5 8.R6 9.部分pc 10.部分测试 要求 1.绘制拓扑及划分网段 2.配置 1.lsw1 2.lsw2 3.R1 4.R2 5.R3 6.R4 7.R5 8.R6 9.部分pc 10.部分测试

SpringBoot【原理分析、YAML文件、SpringBoot注册web组件】(二)-全面详解(学习总结---从入门到深化)

目录 SpringBoot原理分析_核心注解 YAML文件_配置文件介绍 YAML文件_自定义配置简单数据 YAML文件_自定义配置对象数据 YAML文件_自定义配置集合数据 YAML文件_读取配置文件的数据 使用ConfigurationProperties读取 YAML文件_占位符的使用 YAML文件_配置文件存放位置及优…

react+unittest+flask 接口自动化测试平台

目录 1 前言 2 框架 2-1 框架简介 2-2 框架介绍 2-3 框架结构 3 平台 3-1 平台组件图 1 新建用例 2 生成测试任务 3 执行并查看测试报告 3-2 用例管理 3-2-1 用例设计 3-3 任务管理 3-3-1 创建任务 3-3-2 执行任务 3-3-3 测试报告 3-3-4 邮件通知 1 前言 在现…

【电路原理学习笔记】第3章:欧姆定律:3.4 电阻的计算

第3章&#xff1a;欧姆定律 3.4 电阻的计算 电阻相关欧姆定律公式&#xff1a; R V I R\frac{V}{I} RIV​ 【例3-16】在图3-13所示的电路中&#xff0c;电阻为多少时&#xff0c;电池的电流才为3.08A&#xff1f; 【答】 R V I 12 V 3.08 A 3.90 Ω R\frac{V}{I}\frac{1…

AI大模型的现状与发展

AI大模型的现状与发展 &#x1f607;博主简介&#xff1a;我是一名正在攻读研究生学位的人工智能专业学生&#xff0c;我可以为计算机、人工智能相关本科生和研究生提供排忧解惑的服务。如果您有任何问题或困惑&#xff0c;欢迎随时来交流哦&#xff01;&#x1f604; ✨座右铭…

leetcode 108. 将有序数组转换为二叉搜索树

2023.7.16 由数组构造二叉搜索树地问题&#xff0c;本题可以借鉴从中序与后序遍历序列构造二叉树 这道题&#xff0c;这类题本质就是寻找分割点&#xff0c;分割点作为当前节点&#xff0c;然后递归左区间和右区间。 下面直接看代码&#xff1a; class Solution { public:Tree…

电子器件系列43:贴片led、发光二极管

干货&#xff01;发光二极管的全面解读 二极管、发光二极管参数详解_sam-zy的博客-CSDN博客 对几个型号的贴片led进行参数解读&#xff1a; ols-330 特性&#xff1a; 带镜头&#xff0c;从PCB背面安装 视角40 贴片1206 尺寸&#xff1a;3.2(长)x1.6(宽)x1.9(高)mm …

明代元素时装小姐姐【InsCode Stable Diffusion美图活动一期】

一、 Stable Diffusion 模型在线使用地址&#xff1a;https://inscode.csdn.net/inscode/Stable-Diffusion 二、模型版本及相关配置&#xff1a; 模型&#xff1a;chilloutmix_NiPrunedFp32Fix Lora&#xff1a;hanfu_ming 采样迭代步数&#xff08;steps&#xff09;: 40 采样…