【贪心算法】Leetcode 55. 跳跃游戏 45. 跳跃游戏 I

news2024/11/16 1:46:47

【贪心算法】Leetcode 55. 跳跃游戏 45. 跳跃游戏 II

  • Leetcode 55. 跳跃游戏
    • 解法1 贪心
  • Leetcode 45. 跳跃游戏I
    • 解法 贪心

Leetcode 55. 跳跃游戏

---------------🎈🎈55. 跳跃游戏 题目链接🎈🎈-------------------
在这里插入图片描述

解法1 贪心

在这里插入图片描述

关键点在于:不用拘泥于每次究竟跳几步,而是看覆盖范围,覆盖范围内一定是可以跳过来的,不用管是怎么跳的。
⭐️每次移动取最大跳跃步数(得到最大的覆盖范围),每移动一个单位,就更新最大覆盖范围coverRange。

class Solution {
    public boolean canJump(int[] nums) {
        // 遍历数组,nums[i]代表当前可以覆盖到的最大范围coverRange,
        // 在循环中不断的修改这个coverRange
        // 之后在这个范围中遍历,最终看能否覆盖到最后一个下标
        if(nums.length == 1) return true;
        int coverRange = 0;
        for(int i = 0; i <= coverRange; i++){
            coverRange = Math.max(coverRange,nums[i]+i); //动态更新coverRange
            if(coverRange >= nums.length-1) return true;
        }
    
        return false;
    }
}          

Leetcode 45. 跳跃游戏I

在这里插入图片描述

解法 贪心

为了以最小步数跳跃到最后一节点,意味着:
如果当前的覆盖范围coverrange不包含最后一个节点,那么就遍历到当前覆盖范围的最后一个元素nums[coverrange],期间记录每个节点的覆盖范围nums[i]+i,取最大的存入max
在遍历完当前覆盖范围的最后一个元素后,更新覆盖范围coverrange为max,跳跃次数+1
如果当前覆盖范围包含了最后一个节点,跳跃次数+1,结束

class Solution {
    public int jump(int[] nums) {
        if(nums.length == 1) return 0;
        int coverrange =nums[0];
        int max = nums[0];
        int result = 0;
      
        for(int i = 0; i<=coverrange;i++){
            
            if(coverrange>=nums.length-1){  // 如果覆盖范围coverrange大于了目标,那么代表跳跃次数+1后可以到达,break
                result++;
                break;
            }

            if(nums[i]+i>max){ // 如果当前遍历的nums[i]+i>max,那么就更新目前coverrange中的最大范围max
                max=nums[i]+i;
            }

            if(i==coverrange){ // 如果当前遍历到覆盖范围coverrange的最后一个,那么就更新覆盖范围为max,之后跳跃次数+1
                coverrange=max;
                result++;
            }
        }
        return result;
    }
}

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

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

相关文章

【计算机网络篇】物理层(2)传输方式

文章目录 &#x1f354;传输方式⭐串行传输和并行传输⭐同步传输和异步传输&#x1f388;同步传输&#x1f388;异步传输 ⭐单向通信&#xff0c;双向交替通信和双向同时通信 &#x1f354;传输方式 在物理层中&#xff0c;传输方式是指数据在传输介质中传输的方式和方法。常见…

《论文阅读》EmpDG:多分辨率交互式移情对话生成 COLING 2020

《论文阅读》EmpDG:多分辨率交互式移情对话生成 COLING 2020 前言简介模型架构共情生成器交互鉴别器损失函数前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《EmpDG: Multi-resolution Interactive E…

牛客题霸-SQL进阶篇(刷题记录一)

本文基于前段时间学习总结的 MySQL 相关的查询语法&#xff0c;在牛客网找了相应的 MySQL 题目进行练习&#xff0c;以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多&#xff0c;因此本文不再展示&#xff0c;只提供 MySQL 代码与示例输出。 部分题目因…

递归算法c++

主页:(*∇&#xff40;*) 咦,又好了~ xiaocr_blog 算法概述&#xff1a;递归算法是一种直接或者间接调用自身函数或者方法的算法。说简单了就是程序自身的调用。 算法实质&#xff1a;递归算法就是将原问题不断分解为规模缩小的子问题&#xff0c;然后递归调用方法来表示问题的…

esp8266WIFI模块教程:ATK-ESP8266——TCP网络通讯和服务器连接

前言 ATK-MW8266D 模块是正点原子推出的一款高性能 UART-WIFI&#xff08;串口-无线&#xff09;模块&#xff0c;ATK-MW8266D 模块板载了正点原子公司自主研发的 ATK-ESP-01 模块&#xff0c;该模块通过 FCC、CE 认证&#xff0c;可直接用于出口欧美地区的产品。   ATK-MW82…

springboot酒店管理系统 论文【源码】

springboot酒店管理系统开发说明 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1…

【SQL】1934. 确认率(IFNULL(); IF())

题目描述 leetcode题目&#xff1a;1934. 确认率 Code select Signups.user_id,ifnull(confirmation_rate1, 0) as confirmation_rate from Signups left join(select user_id,round(sum(if(actionconfirmed, 1, 0))/count(*), 2) as confirmation_rate1from Confirmationsgr…

蓝桥杯-24点-搜索

题目 思路 --暴力递归全组合的方法。只有4个数&#xff0c;4种计算方式&#xff0c;共有4 * 3 * 2 * 1 * 4种不同的情况&#xff0c;可以写递归来实现。 --每次计算都是两个数之间的运算&#xff0c;因此4个数需要3次计算&#xff0c;第一次计算前有4个数&#xff0c;第二次有…

Python:filter过滤器

filter() 是 Python 中的一个内置函数&#xff0c;用于过滤序列&#xff0c;过滤掉不符合条件的元素&#xff0c;返回由符合条件元素组成的新列表。该函数接收两个参数&#xff0c;一个是函数&#xff0c;一个是序列&#xff0c;序列的每个元素作为参数传递给函数进行判定&…

耐腐蚀高纯特氟龙塑料量瓶进口聚四氟乙烯材质PFA容量瓶

PFA容量瓶&#xff0c;也叫特氟龙量瓶&#xff0c;是用于配制标准浓度溶液的精确实验室器皿&#xff0c;是有着细长颈、梨形肚的耐强腐蚀平底塑料瓶&#xff0c;颈上有标线&#xff0c;常用来直接配制标准溶液和准确稀释溶液以及制备样品溶液。因其有着不易碎、材质纯净、化学稳…

Android studio开发中Virtual Device模拟器的设置和屏幕错位等问题

Android SDK开发中Virtual Device模拟器的设置和使用 本文介绍android studio2023 3.1.13版本中模拟器的设置和在cordova开发中的运行方法 对于老版android studioAVD模拟器的使用&#xff0c;参见&#xff1a;Android SDK手机应用开发中第三方模拟器、真机运行方法以及AVD模拟…

camelot pdf提取表格实践(记录)

参考&#xff1a; 巧用Python的camelot库批量提取PDF发票信息 关于文本pdf的表格抽取 AttributeError: module ‘camelot‘ has no attribute ‘read_pdf‘及类似问题解决办法 camelot 参数 https://blog.csdn.net/INTSIG/article/details/123000010 报错解决&#xff1a; Mod…

简析|创业老隋分享的人力RPO项目如何?

在当今社会&#xff0c;创业热潮席卷而来&#xff0c;各类项目层出不穷。近日&#xff0c;创业老隋分享的人力RPO项目引起了广泛关注。那么&#xff0c;这个项目究竟如何呢?是否靠谱?经过深入了解和分析&#xff0c;我认为这个项目是靠谱的。 首先&#xff0c;从项目的背景和…

2.1(TCP)

TCP—传输控制协议 是一种面向连接的可靠传输协议。可靠、有序、无丢弃和不重复。 特点&#xff1a; TCP是面向连接&#xff08;虚连接&#xff09;的传输层协议每一条TCP连接有且只能有两个端点。可靠、有序、无丢弃和不重复。TCP协议提供全双工通讯。 发送缓存 存放发送方…

Linux--Docker容器引擎

1、Docker是什么 Docker是在Linux容器里运行应用的开源工具&#xff0c;是一种轻量级的 “虚拟机”。诞生于2013年&#xff0c;最 初的发起者是dotCloud公司。后来改名为Docker Inc&#xff0c;专注于Docker相关技术和产品的开发。Docker 项目目前已经加人啊Linux基金会&#x…

迅雷网盘推广拉新怎么申请授权怎么赚钱?

迅雷网盘作为国内知名的云存储服务提供商&#xff0c;拥有庞大的用户群体和稳定的服务质量。为了进一步扩大市场份额&#xff0c;迅雷网盘推出了拉新项目&#xff0c;通过给予推广者一定的佣金&#xff0c;鼓励他们向更多的人推广迅雷网盘。 网盘功能强大&#xff1a;作为国内比…

【送外卖的你】送外卖对程序员的职业发展有影响吗

送外卖对程序员的职业发展可能会有一些影响&#xff0c;具体取决于个人情况和职业目标。以下是一些可能的影响&#xff1a; 1. 时间管理&#xff1a;送外卖可能需要花费较多的时间和精力&#xff0c;这可能会对程序员的工作时间和项目进度产生一定的影响。需要合理安排时间&…

Zookeeper(三)一致性算法Paxos

目录 1. Paxos算法是什么2. Paxos算法产生背景2.1. 拜占庭将军问题2.2. Paxos算法由来2.3 产生背景 3. 算法详解3.1 角色 & 提案提案 (Proposal)角色 3.2. 问题描述3.2.1. 一致性算法的前置条件3.2.2. 不同角色通过发送消息进行通信 3.3. 推导过程3.3.1. 只有一个Acceptor3…

【四 (6)数据可视化之 Grafana安装、页面介绍、图表配置】

目录 文章导航一、Grafana介绍[✨ 特性]二、安装和配置1、安装2、权限配置&#xff08;账户/团队/用户&#xff09;①用户管理②团队管理③账户管理④看板权限 3、首选项配置4、插件管理①数据源插件②图表插件③应用插件④插件安装方式一⑤安装方式二 三、数据源管理1、添加数…

程序计数器

程序计数器 JVM中的程序计数器(Program Counter Register)并非是广义上所指的物理寄存器&#xff0c;是对物理PC寄存器的一种抽象模拟 PC寄存器(程序计数器) PC寄存器用来存储指向下一条指令的地址&#xff0c;也即将要执行的指令代码。由执行引擎读取下一条指令。 它是一块很…