Leetcode面试经典150题-45.跳跃游戏II

news2024/9/20 5:41:17

 解法都在代码里,不懂就留言或者私信,这个题绝对比动态规划的解法强

class Solution {
    /**本题我们先不用动态规划了,因为从任何一个位置都可能跳到最后一个位置,用动态规划的成本太高了
    本题的解题思路:看看某个步数内最多能跳到多远,如果某步内能涵盖最后一个位置,那这个就是最小的步数 */
    public int jump(int[] nums) {
        /**你就在终点,跳啥啊 */
        if(nums.length == 1) {
            return 0;
        }
        /**否则是需要跳的,至少一步,我们定义两个变量curStep代表当前跳的步数
        curMax代表当前步数最多可以跳多远,比如0位置的值是3,那就是curStep是1,curMax是3代表一步之内最多能跳到3*/
        int curStep = 1;
        int curMax = nums[0];
        /**假设再多跳一步能跳到多远 */
        int nextStepMax = 0;
        for(int i = 1; i < nums.length; i++) {
            /**如果curStep覆盖不了,那就得多跳一步,curStep++同时看看 */
            if(i > curMax) {
                curStep ++;
                /**之前已经计算过多跳一步最远可以跳到哪里了,放在了nextStepMax*/
                curMax = nextStepMax;
                /**这里注意nextStepMax也要更新 */
                nextStepMax = Math.max(nextStepMax,i + nums[i]);
            } else {
                /**当前在curStep的覆盖范围内,如果让我多跳一步,我最多可以跳多远,在当前覆盖范围内看看i+nums[i]会不会比原来的nextStepMax大,谁大取谁*/
                nextStepMax = Math.max(nextStepMax,i + nums[i]);
            }
            /**如果当前步数可以到达最后了,直接返回 */
            if(curMax >= nums.length - 1) {
                break;
            }
        }
        return curStep;

    }
}

运行结果

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

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

相关文章

Vue项目安装依赖(npm install)报错的解决

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

OLED模块

目录 一&#xff1a;OLED使用原理 硬件部分 SSD1306框图及引脚定义 选择通信接口 原理图 软件部分 4线SPI的传输时序 3线SPI的传输时序 I2C的通信时序 执行逻辑框图 二&#xff1a;基本命令表 滚动命令表 寻址设置命令表 硬件配置命令表 时间及驱动命令 初始化过…

《自然语言处理》—— 词向量之CountVectorizer方法实现

文章目录 一、什么是词向量&#xff0c;为什么要进行词向量二、CountVectorizer方法简单介绍1、基本作用2、参数详解 三、示例&#xff1a;代码实现 一、什么是词向量&#xff0c;为什么要进行词向量 词向量是一种将单词或短语映射到实数向量空间的技术。在自然语言处理中&…

Loki Unable to fetch labels from Loki (no org id)

应该是多租户相关导致的 参考文档: 参考文档cMulti-tenancy | Grafana Loki documentationDescribes how Loki implements multi-tenancy to isolate tenant data and queries.https://grafana.com/docs/loki/latest/operations/multi-tenancy/ https://github.com/grafana…

中国招标投标平台JS逆向:DES加密与Python纯算还原

中国招标投标平台JS逆向&#xff1a;DES加密与Python纯算还原 目录 &#x1f510; JS DES解密&#x1f9ee; Python版本的纯算实现 &#x1f510; JS DES解密 在中国招标投标公共服务平台的分析过程中&#xff0c;发现了数据加密采用了DES算法。DES&#xff08;数据加密标准&…

JS运行机制及事件循环机制

进程&#xff1a;独立运行&#xff0c;拥有资源空间的应用程序 线程&#xff1a;CPU调度的最小单位 浏览器: 多进程 浏览器有哪些进程&#xff1f; Browser进程&#xff0c;也是主进程 负责各个页面的管理 创建 销毁前进后退等网络资源下载 插件进程&#xff1a;比如Chrome的…

多线程+连接池+代理 运行一段时间线程阻塞,如何解决??

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

【CSP:202012-2】期末预测之最佳阈值(Java)

题目链接 202012-2 期末预测之最佳阈值 题目描述 求解思路 前缀和 根据题意我们可以得知&#xff1a; θ θ θ 值为 a[i].y 时的预测正确的次数等于 a[i].y 前面有多少个 result 0 以及后面有多少个result 1。定义Score类用来存储y和result&#xff0c;其中sum0表示a[1]…

苹果macOS 15.1 Beta 3发布 允许用户将App Store应用下载到外置硬盘

8 月 29 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 15.1 开发者预览版 Beta 3 更新&#xff08;内部版本号&#xff1a;24B5035e&#xff09;&#xff0c;本次更新距离上次发布 Beta / RC 间隔 16 天。 苹果公司在发布 iOS / iPadOS 18.1 Beta 3 更新之外&#x…

redis的共享session应用

项目背景&#xff1a; 该项目背景就是黑马的黑马点评项目。 一&#xff1a;基于Session实现验证码登录流程 基本的登录流程我们做了很多了。这个是短信登录流程 其实和普通的登录流程就多了一个生成验证码&#xff0c;并将验证码保存在session中&#xff0c;并且呢&#xf…

20240831 每日AI必读资讯

Runway 突然删除清空了 HuggingFace 上的所有内容&#xff01;原因不明... - 之前的项目也无法访问了&#xff0c;比如 Stable Diffusion v1.5也被删了 &#x1f517;https://huggingface.co/runwayml/stable-diffusion-v1-5 &#x1f517;GitHub 也空了&#xff1a;https:…

ue Rotate to face BB entry转向不对

可能原因&#xff1a; 角色模型没有到正向。 错误&#xff1a; 正确&#xff1a;

C语言:ASCII码表和字符操作

目录 目录 1. 引言 2. ASCII码表 2.1 控制字符 2.2 可显示字符 3. 例子 3.1 相关函数 3.2 打印能够显示的 ASCII码 3.3 字母大小写转换 3.4 数字转数字字符 1. 引言 因为计算机只是认识 0 和 1组成的一串串的二进制数字&#xff0c;为了将人类认识的文…

【时间盒子】-【1.序言】高效人士都在用的时间管理方法。我是如何通过鸿蒙元服务APP实现?

一、介绍 【时间盒子】系列内容将帮助开发者学习如何构建一个全新的HarmonyOS元服务应用&#xff0c;学习使用DevEco Studio创建新项目、使用预览器预览页面、使用真机调试APP、自定义弹窗、使用系统提醒能力&#xff08;闹钟&#xff09;、使用首选项数据持久化、熟悉ArkUI页…

Centos 下载和 VM 虚拟机安装

1. Centos 下载 阿里云下载地址 centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 2. VM 中创建 Centos 虚拟机 2.1 先打开 VM 虚拟机&#xff0c;点击首页的创建新的虚拟机 2.2 选择自定义&#xff0c;然后点击下一步。 2.3 这里默认就好&#xff0c;继续选择下一…

PE文件结构详解(非常详细)

最近在参考OpenShell为任务栏设置图片背景时&#xff0c;发现里面使用了IAT Hook&#xff0c;这一块没有接触过&#xff0c;去查资料的时候发现IAT Hook需要对PE文件结构有一定的了解&#xff0c;索性将PE文件结构的资料找出来&#xff0c;系统学习一下。 PE文件结构 Portable…

C++基础(1)——入门知识

目录 1.C版本更新 2.C参考⽂档&#xff1a; 3.C书籍推荐 4.C的第⼀个程序 5.命名空间 5.1namespace的价值 5.2namespace的定义 5.3 命名空间使⽤ 6.C输⼊&输出 7.缺省参数 8.函数重载 9.引⽤ 9.1引⽤的概念和定义 9.2引⽤的特性 9.3引⽤的使用 9.4const引⽤…

YOLOv5独家改进:一种高效移动应用的卷积加性自注意Vision Transformer

💡💡💡本文独家改进:高效移动应用的卷积加性自注意Vision Transformer,构建了一个新颖且高效实现方式——卷积加性相似度函数,并提出了一种名为卷积加性标记混合器(CATM) 的简化方法来降低计算开销 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/cat…

opencv/c++的一些简单的操作(入门)

目录 读取图片 读取视频 读取摄像头 图像处理 腐蚀 膨胀 调整图像大小 裁剪和缩放 绘制 绘制矩形 绘制圆形 绘制线条 透视变换 颜色检测 轮廓查找 人脸检测 检测人脸 检测嘴巴 可适当调整参数 读取图片 读取路径widows使用vis sto一定是\斜杠 #include <o…

LoRA 和 DoRA 代码笔记

Improving LoRA: Implementing Weight-Decomposed Low-Rank Adaptation (DoRA) from Scratch LoRA LoRA初始化时&#xff0c;A使用正态分布&#xff0c;B使用0. class LoRALayer(nn.Module):def __init__(self, in_dim, out_dim, rank, alpha):super().__init__()std_dev 1…