Leetcode 45 跳跃游戏 II

news2024/11/14 10:23:09

题意理解

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

        每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。

        还是从初始坐标i=0的位置到达最后一个元素,但是问题不是能不能跳到,而是最少几步能跳到最后一个元素

        目标:求跳到末尾元素的最小步数。

解题思路

 如上面的例子所示:

        两种方式都能跳到末尾,但是最小步数是2.

        要用贪心法解题,就要明确什么是局部最优,什么是全局最优。

        这道题里,全局最优到达末尾元素步数尽可能小,则要求每步尽可能大一些

        所以局部最优为:使当前步,尽可能的跳到较远的位置上

        我们使用两个量:cur表达当前能到达的最远距离,next表达下一步能到达的最远距离。

        我们在这个cur范围内挑选第二步,让两步尽可能达到尽可能远的位置。

1.贪心解题

我们用count来记录步数,cur来记录当前可达的最远位置,next表达下一步能到达的最远位置。

若再探索一步就覆盖到末尾元素,则count+1,结束

若再探索最远一步仍就到不了末尾元素,则count++,探索下下一步的最远位置。

class Solution {
    public int jump(int[] nums) {
        if(nums.length==1) return 0;//只有一个末尾元素,不用走也能到
        int count=0;
        int cur=0;
        int next=0;
        for(int i=0;i<nums.length;i++){
            next=Math.max(next,i+nums[i]);
            //当前步探索位置到达边界
            if(next>=nums.length-1){
                count++;
                break;
            }
            if(i==cur){
                count++;
                cur=next;
            }
        }
        return count;
    }
}

2.分析

时间复杂度:O(n)

空间复杂度:O(n)

n为输入数组的长度。

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

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

相关文章

2024Web自动化测试的技术框架和工具有哪些?

Web 自动化测试是一种自动化测试方式&#xff0c;旨在模拟人工操作对 Web 应用程序进行测试。这种测试方式可以提高测试效率和测试精度&#xff0c;减少人工测试的工作量和测试成本。在 Web 自动化测试中&#xff0c;技术框架和工具起着至关重要的作用。本文将介绍几种常见的 W…

Ubuntu 常用命令之 tar 命令用法介绍

tar 命令在 Ubuntu 系统中是用来打包和解包文件的工具。tar 命令可以将多个文件或目录打包成一个 tar 文件&#xff0c;也可以将 tar 文件解包成原来的文件或目录。 tar 命令的常用参数如下 c&#xff1a;创建一个新的 tar 文件。x&#xff1a;从 tar 文件中提取文件。v&…

【源码】基于SpringBoot+thymeleaf实现的快递之家管理系统

系统介绍 基于SpringBootthymeleaf实现的快递之家管理系统是为学校打造的高效的快递管理系统&#xff0c;系统分为管理员、注册用户两类角色&#xff0c;一共是分为三大菜单项&#xff0c;分别是我的物流、个人管理、后台管理&#xff0c;管理员拥有全部菜单&#xff0c;注册用…

科研院校和研究所都在用功率放大器做哪些实验

科研院校和研究所在科研工作中常常使用功率放大器进行实验。功率放大器是一种电子设备&#xff0c;其主要功能是将输入信号的功率增加到预定的输出功率水平&#xff0c;并保持信号的波形不失真。它在各个学科领域都有广泛的应用&#xff0c;包括通信、无线电、雷达、生物医学等…

外汇天眼:Cboe宣布与纽约州Secaucus的NY6数据中心建立连接

NY6数据中心将集成到Cboe的延迟均衡Secaucus基础架构中&#xff0c;目前该基础架构使用NY4和NY5数据中心。 NY6将仅作为BYX Equities、BZX Equities、EDGA Equities、EDGX Equities、BZX Options、EDGX Options和C2 Options交易所的延迟均衡出入口&#xff08;PoP&#xff09;…

算法--数据结构基础

文章目录 数据结构单链表栈表达式求值前缀表达式中缀表达式后缀表达式 队列单调栈单调队列KMPTrie并查集堆哈希表字符串哈希 数据结构 单链表 用数组模拟&#xff08;静态链表&#xff09;效率比定义Node类&#xff08;动态链表&#xff09;效率高些 使用数组模拟单链表&am…

DBNet文本检测网络 (FPN、batch normalization、Transpose conv)

DB Net文本检测网络概述 DBNet论文地址&#xff1a;https://arxiv.org/pdf/1911.08947.pdf DBNet是一种基于分割的文本检测网络&#xff0c;使用分割网络提供自适应的thresh用于二值化。 原始二值化方法和DBNet中的动态阈值 传统的基于分割的检测方法&#xff0c;对于分割后的…

C++第一讲之初入C++

注&#xff1a;本文是对于学完C语言再学C同学的讲解&#xff0c;主要补充C与C语言不同之处&#xff0c;如果你没学过C语言&#xff0c;不建议观看本文。 一.C简介 我们都知道C语言是过程性语言&#xff08;强调的是实现过程&#xff09;&#xff0c;即对计算机语言要处理的两…

【持续更新】汇总了一份前端领域必看面试题

文章目录 1. 写在前面2. 前端面试汇总2.0.1. 如何提⾼webpack的打包速度2.0.2. 数组去重2.0.3. 前端有几种缓存方式&#xff1f;2.0.4. nextTick描述一下&#xff1f;2.0.5. Webpack层面的优化&#xff1f;2.0.6. 代码层面的优化&#xff1f;2.0.7. Web 技术的优化&#xff1f;…

ESP32 - Thonny+MicroPython+ESP32 继电器的使用

ESP32 - ThonnyMicroPythonESP32 继电器的使用 认真理解&#xff0c;能看懂 继电器默认为断开 from machine import Pin p13 Pin(13, Pin.OUT) p13.value(1) # 吸合 #p13.value(0) # 断开

专攻代码型闪存芯片赛道,芯天下授权世强硬创代理全线产品

近年来受下游应用需求增长的驱动&#xff0c;代码型闪存芯片市场空间持续扩张&#xff0c;在后疫情之下NOR Flash及SLC NAND Flash市场规模整体仍保持逐步增长的趋势。 为了迎合市场需求&#xff0c;世强先进&#xff08;深圳&#xff09;科技股份有限公司&#xff08;下称“世…

【离散数学】——期末刷题题库(树其二)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

vue2的小练习——实现自定义指令v-nodata的商品列表

实现&#xff1a;一个商品列表&#xff0c;每个商品包含商品名称、商品价格&#xff0c;我们可以对每个商品进行删除操作&#xff0c;要求如下。 实现一个自定义指令v-nodata&#xff0c;指令的功能是当商品列表中没有商品数据时会显示一个div&#xff0c;div中有“暂无数据”…

node.js mongoose middleware

目录 官方文档 简介 定义模型 注册中间件 创建doc实例&#xff0c;并进行增删改查 方法名和注册的中间件名相匹配 执行结果 分析 错误处理中间件 手动抛出错误 注意点 官方文档 Mongoose v8.0.3: Middleware 简介 在mongoose中&#xff0c;中间件是一种允许在执…

智能停车场系统施工布线方案

一、停车场系统所用的控制主板的信号线是不可以与交流电源线平行铺设的&#xff0c;所以应该尽量避免穿在同一PVC管内。 二、停车场系统在布线的时候需要避免导线产生接头。如果必须有接头&#xff0c;那么接头也应该使用压线或焊接并作防水处理。 三、停车场布线所有外部设备…

玩转大数据19:数据治理与元数据管理策略

随着大数据时代的到来&#xff0c;数据已经成为企业的重要资产。然而&#xff0c;如何有效地管理和利用这些数据&#xff0c;成为了一个亟待解决的问题。数据治理和元数据管理是解决这个问题的关键。 1.数据治理的概念和重要性 数据治理是指对数据进行全面、系统、规范的管理…

netty线程调度定制

1、netty的线程调度问题 在netty的TCP调度中&#xff0c;线程的调度封装在NioEventLoopGroup中&#xff0c;线程执行则封装在NioEventLoop中。 线程调度规则封装在MultithreadEventExecutorGroup的next方法中&#xff0c;这个方法又封装了EventExecutorChooserFactory&#xf…

低代码核心能力详解:简化应用开发的新思路

低代码平台作为一种快速地应用开发解决方法&#xff0c;为中小企业实现数字化转型提供了机会。但是&#xff0c;对于一些刚开始触碰低代码平台的企业来说&#xff0c;了解其核心能力是很重要的。本文将详细分析低代码平台的核心能力&#xff0c;并在挑选低代码平台以前为中小企…

Jmeter接口程序项目实战教程

1.什么是jmeter&#xff1f; JMeter是100%完全由Java语言编写的&#xff0c;免费的开源软件&#xff0c;是非常优秀的性能测试和接口测试工具&#xff0c;支持主流协议的测试 2.jmeter能做什么&#xff1f; JMeter是100%完全由Java语言编写的软件性能测试的GUI的测试工具&am…

六、W5100S/W5500+RP2040之MicroPython开发<UDP示例>

文章目录 1. 前言2. 相关网络信息2.1 简介2.2 UDP通讯过程2.3 优点2.4 应用 3. WIZnet以太网芯片4. UDP通信示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代&#xff0c;MicroPyt…