HOT79-跳跃游戏 II

news2024/11/25 22:24:08

        leetcode原题链接:跳跃游戏 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]

示例 1:

输入: nums = [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是2。 从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。

示例 2:

输入: nums = [2,3,0,1,4]
输出: 2

提示:

  • 1 <= nums.length <= 104
  • 0 <= nums[i] <= 1000
  • 题目保证可以到达 nums[n-1]

解题方法:贪心法。遍历数组中的每一个数,一边遍历,一边更新当前可跳转的最大距离记为max_pos,然后把每一个max_pos比做一面墙,每跨过一面墙,则需要跳一步。跨过这面墙后,需要寻找新的墙(即寻找新的max_pos),再寻找墙的过程中,如果超越了终点位置,则结束寻找。

C++代码

#include <iostream>
#include <vector>
class Solution {
public:
    int jump(std::vector<int>& nums) {
        int n = nums.size();
        int max_pos = 0; //下次能到达的最大下标的位置
        int step = 0;//跳的步数
        int last_max_pos = 0;//保存跳转前上次计算的最大跳转位置
        for (int i = 0; i < n - 1; i++) {
            max_pos = std::max(max_pos, nums[i] + i);
            if (i == last_max_pos) { //把last_max_pos当作一面墙,每次经过这面墙就跳过去
                last_max_pos = max_pos;
                step++;
            }
        }
        return step;
    }
};

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

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

相关文章

VUE+view table.exportCsv()导出.csv文档时如何防止数据格式为科学计数

当使用table.exportCsv()方法导出数据时&#xff0c;出现科学计数法问题&#xff0c;像电话号码&#xff0c;身份证号码等&#xff0c;当数据大于15位后面的会用0替代。 针对这一问题&#xff0c;解决方法如下&#xff1a;就是再数字前加上制表符“\t”注意双引号&#xff0c;…

设计模式-简单工厂模式(静态工厂模式)java实现

介绍 简单工厂模式根据所提供的参数数据返回几个可能类中的一个类的实例。通常返回的类都有一个公共的父类和公共的方法。 意图 提供一个类&#xff0c;负责根据一定的条件创建某一具体类的实例。同时使用工厂模式也是为了隐藏创建对象的过程 角色及其职责 (1)工厂(Creator…

机械工业信息研究院:2023年中国生物制药行业报告(附下载)

关于报告的所有内容&#xff0c;公众【营销人星球】获取下载查看 核心观点 医药工业宏观情况分析 2021 年生物制药带动医药工业经 济指标大幅增长。根据统计&#xff0c;2021年规 模以上医药工业增加值同比增长 23.1%&#xff0c;增速较上年同期提升 17.2个百分点&#xff0…

MVSnet点云定量评估指标总结

根据MVSnet论文[1]原文说明&#xff0c;点云评估主要从准确性和完整性两个方面来评估。 针对准确性的评估&#xff0c;采用平均距离指标来度量&#xff0c;具体指标分别为Acc、Comp、overall&#xff0c;准确性指标越低越好&#xff0c;表示R与G之间的距离越小&#xff0c;恢复…

《CodeGeeX2 一个让你编码效率翻倍的扩展,分享几个使用小技巧》学习笔记

《CodeGeeX2 一个让你编码效率翻倍的扩展&#xff0c;分享几个使用小技巧》学习笔记 【Only Key Control】使用按键触发提示 使用注释来提升CodeGeeX生成代码的准确性 在函数的顶部添加对函数的说明然后输入function的关键字再使用【Alt /】来触发自动补全 使用CodeGeeX解释…

构建Docker容器监控系统(Cadvisor +Prometheus+Grafana)

Cadvisor PrometheusGrafana 1.1、Cadvisor产品简介 Cadvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行Cadvisor用户可以轻松的获取到当前主机上容器的运行统计信息&#xff0c;并以图表的形式向用户展示。 1.2、安装docker-ce [rootloc…

LeetCode 热题 100 JavaScript--98. 验证二叉搜索树

给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 *** Definition for …

根据渲染数据长度动态渲染后缀图标

在动态获取数据时&#xff0c;想要渲染后面的图标是根据数据的长度渲染图标位置&#xff0c;效果如下&#xff1a; 代码如下&#xff1a; <el-row :gutter"60"><el-col :span"24"><el-form-item><el-input v-model.trim"form…

zuul实现黑名单,request多次读取问题,stream close

一&#xff0c;背景及设计 1.需要在网关实现黑名单功能&#xff0c;实现拦截指定接口。黑名单用户&#xff0c;会加入指定黑名单列表&#xff0c;关联对应功能&#xff0c;如用户登录&#xff0c;用户下单&#xff0c;用户接单。 2.表设计 平台表&#xff1a;不同系统 黑名单…

TimedCache 类的作用和使用

TimedCache 类的作用是实现一个带有过期时间的缓存。它允许存储键值对&#xff0c;并在一定时间后自动删除过期的键值对。使用 TimedCache 可以提高程序的性能&#xff0c;减少对数据库或其他资源的访问次数。 使用 TimedCache 类时&#xff0c;可以按照以下步骤进行操作&…

干货!esp8266+ds3231低功耗解决方案,在特定时间唤醒

最近首次接触esp8266&#xff0c;也是第一次接触硬件&#xff0c;在一个墨水屏日历项目上遇到了低功耗问题&#xff0c;特此记录。 此墨水屏日历不需要一直处于启动状态&#xff0c;我希望它每几小时或者每天启动一次即可。 解决方案 1&#xff1a;仅使用内部 RTC 通过将GPIO…

Android监听设备亮灭屏广播(动态广播代码)

MainActivity中 public class MainActivity extends Activity {private WakeAndLockReceiver wakeAndLockReceiver;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//注册亮屏和息…

强化学习研究 PG

由于一些原因&#xff0c; 需要学习一下强化学习。用这篇博客来学习吧&#xff0c; 用的资料是李宏毅老师的强化学习课程。 深度强化学习(DRL)-李宏毅1-8课&#xff08;全&#xff09;_哔哩哔哩_bilibili 这篇文章的目的是看懂公式&#xff0c; 毕竟这是我的弱中弱。 强化…

想要实现高效数据复制?Paxos并不总是最佳选择!

数据复制典型的算法就是Paxo和Raft。 1 分片元数据的存储 分布式存储系统中&#xff0c;收到客户端请求后&#xff0c;承担路由功能的节点&#xff1a; 先访问分片元数据&#xff08;简称元数据&#xff09;&#xff0c;确定分片对应节点然后才访问真正数据 元数据&#xf…

PoseiSwap 开启“Poseidon”池,治理体系或将全面开启

PoseiSwap曾在前不久分别以IDO、IEO的方式推出了POSE通证&#xff0c;但PoseiSwap DEX中并未向除Zepoch节点外的角色开放POSE资产的交易。而在前不久&#xff0c;PoseiSwap推出了全新的“Poseidon”池&#xff0c;该池将向所有用户开放&#xff0c;并允许用户自由的进行质押、交…

Python机器学习实战-建立随机森林模型预测肾脏疾病(附源码和实现效果)

实现功能 建立随机森林模型预测肾脏疾病 实现代码 import pandas as pd import warnings warnings.filterwarnings("ignore") pd.set_option(display.max_columns, 26)#读取数据 df pd.read_csv("E:\数据杂坛\datasets\kidney_disease.csv") dfpd.Data…

计算机组成原理-笔记-第二章

二、第二章——数据的表示和运算 1、进位制度&#xff08;二进制、十进制&#xff09; 2、BCD码&#xff08;余三码、2421码&#xff09; 编码方式 功能 好处 弊处 BCD码 将每个十进制数码转换为4位二进制码 精度高&#xff0c;适合直接用于数码管或LED等显示设备 编码…

docker 安装hive

记录一下使用docker快速搭建部署hive环境 目录 写在前面 步骤 安装docker 安装docker安装docker-compose配置docker国内镜像源&#xff08;可选&#xff09; 安装git & 配置github部署Hive docker-hive开始部署 使用Hive命令行收尾工作 安装vi、lrzsz关闭相关命令 END…

解锁Java迭代器:优雅遍历集合元素的秘密武器

解锁Java迭代器&#xff1a;优雅遍历集合元素的秘密武器 你是否曾想过&#xff0c;在Java的编程世界中&#xff0c;有没有一种方法可以优雅地遍历集合中的元素&#xff0c;而不需要关心底层实现&#xff1f;答案是肯定的&#xff0c;那就是——迭代器&#xff08;Iterator&…

使用vite创建Vue/React前端项目,配置@别名和Sass样式,又快又方便

Vite官方网站&#xff1a;Vite | 下一代的前端工具链 Vite 并不是基于 Webpack 的&#xff0c;它有自己的开发服务器&#xff0c;利用浏览器中的原生 ES 模块。这种架构使得 Vite 比 Webpack 的开发服务器快了好几个数量级。Vite 采用 Rollup 进行构建&#xff0c;速度也更快…