【每日力扣中医养生】力扣55. 跳跃游戏

news2025/1/31 1:44:10

Alt

55. 跳跃游戏

文章目录

    • 【每日力扣】力扣55. 跳跃游戏
      • 题目描述
      • 输入输出示例
        • 示例 1
        • 示例 2
      • 思路分析
      • 代码实现
      • 复杂度分析
      • 总结


【每日力扣】力扣55. 跳跃游戏

博主写这篇文章的时候已经凌晨1点30分啦。故想分享一下中医的子午觉这一养生技巧,就算真的要熬夜,也最好在23点~1点的时候睡一觉。
在这里插入图片描述

题目描述

给定一个非负整数数组 nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true;否则,返回 false

输入输出示例

示例 1
  • 输入nums = [2,3,1,1,4]
  • 输出true

解释:可以先跳 1 步,从下标 0 到达下标 1,然后再从下标 1 跳 3 步到达最后一个下标。

示例 2
  • 输入nums = [3,2,1,0,4]
  • 输出false

解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0,所以永远不可能到达最后一个下标。

思路分析

这个问题可以使用贪心算法解决,通过维护一个当前能到达的最远位置来判断是否能够到达最后一个位置。

我们定义“价值”为下标的大小,在所有可以到达的位置中选择一个最高价值的一个。只要贪心地选择最高“价值”的位置,就最有可能到达最后一个下标。

为什么?
首先我们举例说明,位置1和位置2,它们的数字分别为10和20,
如果去位置1,我们就必定可以到达[1, 1 + 10]这个区间的任一位置
如果去位置2,我们就必定可以到达[2, 2 + 20]这个区间的任一位置

所以,
如果我们希望尽可能找到一条能到达最后一个位置的路,显然我们只需要一直沿着最高“价值”的路径就可以了。这样,这道题就转换成了一个翻版贪心捡钱的问题(捡100块比10块好),道理都是一样的。

具体思路如下:

  1. 初始化 max_reach 为 0,表示当前能到达的最远位置。
  2. 遍历数组中的每一个元素,判断当前下标 i 是否在 max_reach 范围内,如果不在,则说明无法到达当前位置,返回 false
  3. 如果在 max_reach 范围内,则更新 max_reachi + nums[i] 和当前 max_reach 的最大值。
  4. 如果在遍历过程中,max_reach 大于等于数组的最后一个下标,返回 true

代码实现

class Solution:
    def canJump(self, nums: List[int]) -> bool:


        # max_reach 表示当前能到达的最远位置
        max_reach = 0
        
        for i in range(len(nums)):
            # 如果当前下标 i 超过了 max_reach,说明无法到达当前位置
            if i > max_reach:
                return False
            
            # 更新 max_reach
            max_reach = max(max_reach, i + nums[i])
            
            # 如果 max_reach 已经超过或到达最后一个下标,则返回 True
            if max_reach >= len(nums) - 1:
                return True
        
        return False


复杂度分析

  • 时间复杂度 O ( n ) O(n) O(n),其中 n n n 是数组 nums 的长度。我们只需要遍历一次数组即可完成所有的判断和计算。
  • 空间复杂度 O ( 1 ) O(1) O(1),我们只使用了常数个额外空间来存储变量 max_reach

总结

本题使用贪心算法解决,通过维护一个能到达的最远位置来判断是否可以到达最后一个位置。贪心算法的核心思想在于每一步都做出局部最优选择,即选择能到达的最远位置,从而保证最终可以达到全局最优。通过这种方式,我们能够在 O ( n ) O(n) O(n) 的时间复杂度内判断是否可以跳跃到最后一个位置。

这道题目的核心思路和贪心算法的思想高度一致,通过每一步选择最佳方案来确保最终的整体最优。希望这篇文章能够帮助你更好地理解贪心算法在实际问题中的应用。

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

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

相关文章

第一阶段面试问题(前半部分)

1. 进程和线程的概念、区别以及什么时候用线程、什么时候用进程? (1)线程 线程是CPU任务调度的最小单元、是一个轻量级的进程 (2)进程 进程是操作系统资源分配的最小单元 进程是一个程序动态执行的过程,包…

Scrapy 爬取旅游景点相关数据(八)重用代理

本期学习:代理的使用与代理池的更新 1 代理IP提取 在Scrapy 爬取旅游景点相关数据(六)已经讲到了代理的使用,可以先学习这一期再来看本期内容, 第一步是代理IP提取,下面代码就是在中间件初始化的时候去更…

数据库之mysql初体验

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

Nsight-Compute Global Load相关Metric测试

Nsight-Compute Global Load相关Metric测试 1.参考链接2.生成测试用例3.编译4.Profiling并将结果导出到csv文件5.截图 本文使用ptx指令直接从global memory获取数据,了解相关metrics及其计算过程 1.参考链接 PTX Cache OperatorsPTX LD指令Kernel Profiling Guide Caches 2.…

探秘LED显示屏背后的秘密:数字信号与数字电路的奇妙世界

走进繁华的都市,无论是闪烁的霓虹灯下,还是宏大的体育场馆内,LED显示屏以其绚丽的色彩和清晰的画面吸引着我们的目光。但你是否好奇,这些令人惊叹的显示效果背后,隐藏着怎样的科技奥秘?今天,就让…

数据结构初阶-复杂度

复杂度 🎈1.例题一🎈2.例题二 🎈1.例题一 数组nums包含从0到n的所有整数,但其中缺了一个,请编写代码找出那个缺失的整数。 ✅思路1:先冒泡排序,再遍历,当前值1,不等于下一…

Tomato靶机攻略

1、启动靶机 2、通过nmap -sA 192.168.168.0/24得到靶机IP 3、扫描目录 用dirb http://192.168.49.128扫描敏感目录 4、访问敏感目录 5、通过查看源码,发现其存在文件包含漏洞,利用该漏洞查看日志文件 http://192.168.168.131/antibot_image/antibots/…

腾讯云SDK发送短信

腾讯云接口发送短信 (1)创建签名 (2)创建模板 可以自定义模板参数例如:你好{1},这是一个短信 (3)确认套餐包 发送的额度 (4)创建应用 查看应用设置&#…

基于深度学习的植物疾病检测识别系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 农作物病害不仅影响产量,还会导致严重的经济损失。传统的病害检测方法通常依赖人工专家进行目视检查,这种方法费时费力且容易受到主观因素的影响。近年来,深度学…

【Unity】3D功能开发入门系列(一)

Unity3D功能开发入门系列(一) 一、开发环境(一)安装 Unity(二)创建项目(三)Unity 窗口布局 二、场景与视图(一)场景(二)游戏物体&…

R语言统计分析——箱线图

参考资料:R语言实战【第2版】 箱线图(又称盒须图)通过绘制连续型变量的五数总括,即最小值、下四分位数(第25百分位数)、中位数(第50百分位数)、上四分位数(第75百分位数&…

Linux真实机器安装

引言 装机电脑:具有网卡硬件、磁盘空间 > 64G、内存空间 > 4G; 装机工具:rufus,u盘(8G); 装机系统:centos7.iso; 联网工具:路由器,网线 1.…

大学新生如何高效入门编程?全面指南来助力

引言 在当今数字化时代,编程已经成为一项必备技能。无论你未来从事什么职业,编程能力都能为你的职业生涯增添光彩。对于即将步入大学的新生来说,如何高效入门编程是一道关键课题。本文将从如何选择编程语言、制定学习计划、找到顶尖学习资源…

汇昌联信科技拼多多运营如何?

汇昌联信科技拼多多运营如何?在电商行业,拼多多的崛起无疑为许多企业带来了新的机遇。作为一家专注于电子商务解决方案的公司,汇昌联信科技在拼多多的运营方面展现出了不俗的实力。他们不仅成功帮助多个品牌入驻拼多多平台,还通过精细化运营…

缺口将达到1000万?人工智能(AI)专业就业前景分析

从年初以来,人工智能一直占据着热话题榜首。随着人工智能技术的不断发展和应用,人工智能(AI)专业已经成为了近年来大学校园里最热门的专业之一,成为连续四年新增最多专业。 今天给大家介绍一下,为感兴趣的…

申瓯通信在线录音管理系统Thinkphp远程代码执行漏洞

目录 1.产品简介 2.漏洞概述 3.搜索语法 4.漏洞复现 1.产品简介 申瓯通信在线录音管理系统是一款功能强大的录音管理解决方案,旨在满足公司、集团单位在区域分布下对录音数据的集中管理需求。该系统基于SOC1900、S0C1600等系列录音盒开发,是一个多线…

VMWare虚拟机共享主机的网络访问外网

1.主机中启动客户端并连接外网 2.设置虚拟网络类型为NAT 3.启动虚拟并通过主机访问外网

从“人巡”到“智控”:EasyCVR智能视频监控技术变革河道违建监测模式

一、背景分析 随着城市化进程的加快,河道作为城市生态系统的重要组成部分,其保护与管理日益受到重视。然而,非法侵占河道、违规建设等行为时有发生,不仅破坏了河道的自然生态,还严重威胁到防洪安全和水质安全。为了有…

Google发布三款开放式人工智能模型 重点关注安全问题

Google发布了三款新的、“开放的"人工智能生成模型,并称这些模型比大多数模型"更安全”、“更小巧”、“更透明”。它们是Google Gemma 2生成模型系列的新成员,该系列于今年 5 月首次亮相。这些新模型包括 Gemma 2 2B、ShieldGemma 和 Gemma S…