算法随笔_73: 跳跃游戏

ops/2025/3/15 20:00:46/

上一篇:算法随笔_72: 最大子数组和-CSDN博客

=====

题目描述如下:

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

示例 1:

输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

=====

算法思路:

某个元素 i 能否到达最后一个元素,取决于在元素i 的最大长度范围内是否有可到达最后一个元素的元素j。从中我们可以发现如下的递推关系:

我们设res数组,res[i]表示元素 i 是否能到达最后一个元素,其值为true或false。那么

res[i] = res[i+1] or res[i+2] or ...... res[i+nums[i]]

此公式表示只要有一个为真,res[i]即为真。如果都为假,res[i]为假。

但如果我们依次判断nums[i]范围内的元素 i+1,i+2等等,效率较为低下。我们可以通过以下方式解决:

我们从右往左遍历原数组,并维护一个离元素0最近的索引 j,它的res[j]为真,我们设其为near。near的初始值为n-1。

当遍历到元素 i 时,如果nums[i]的最大长度范围包括了near,那res[i]就为真,否则为假。

实际编写代码时,可以完全不需要res数组,只需要维护near变量即可。遍历完成后,如果near等于0,说明能够到达,否则不能到达。

时间复杂度O(n),下面是Python代码实现:

class Solution(object):def canJump(self, nums):""":type nums: List[int]:rtype: bool"""n=len(nums)near=n-1for i in range(n-2,-1,-1):if nums[i]+i>= near:near=ires=True if near==0 else Falsereturn res

关键词: 动态规划


http://www.ppmy.cn/ops/166026.html

相关文章

泛微ecode的页面开发发送请求参数携带集合

1.在开发过程中我们难免遇见会存在需要将集合传递到后端的情况,那么这里就有一些如下的注意事项,如以下代码: // 新增action.boundasync addQuestion(formData) {var theList this.questionAnswerList;var questionAnswerListArray new Ar…

【C++】每日一练(链表的中间结点)

本篇博客给大家带来的是用C语言来解答找中间结点! 🐟🐟文章专栏:每日一练 🚀🚀若有问题评论区下讨论,我会及时回答 ❤❤欢迎大家点赞、收藏、分享! 今日思想:不服输的…

MyBatis 如何解析 XML 配置文件和 SQL 映射文件

MyBatis 使用 SAX(Simple API for XML)解析器来解析 XML 文件,SAX 是一种基于事件驱动的 XML 解析方式,具有高效、低内存消耗的优点。 MyBatis 主要解析两种类型的 XML 文件: 核心配置文件 (mybatis-config.xml): 定…

python 基于混合式推荐算法的学术论文投稿系统

基于混合式推荐算法的学术论文投稿系统是一个结合多种推荐技术(如基于内容的推荐、协同过滤、知识图谱等)来为研究者推荐合适期刊或会议投稿的系统。以下是实现该系统的关键步骤和Python代码示例。 系统设计思路 1. 数据收集与预处理: - 收…

15.使用读写包操作Excel文件:OpenPyXL 包

一 OpenPyXL 和 XlsxWriter 想写入 xlsx 或者 xlsm 文件,就需要在 OpenPyXL 和 XlsxWriter 中做出选择。 OpenPyXL 既可以读也可以写 Excel 文件的包。可以用它来编辑一些简单的Excel 文件。 XlsxWriter 使用的是从 0 开始的单元格索引, 而 OpenPyXL 使用…

【论文笔记】Contrastive Learning for Compact Single Image Dehazing(AECR-Net)

文章目录 问题创新网络主要贡献Autoencoder-like Dehazing NetworkAdaptive Mixup for Feature PreservingDynamic Feature Enhancement1. 可变形卷积的使用2. 扩展感受野3. 减少网格伪影4. 融合空间结构信息 Contrastive Regularization1. 核心思想2. 正样本对和负样本对的构建…

MVCC实现原理

一、引言 在现代数据库管理系统中,数据的一致性和并发性是两个至关重要的特性。传统的锁机制虽然有效,但也存在着性能瓶颈,特别是在高并发环境下,锁的争用会导致系统响应时间变慢,甚至引发死锁等问题。为了克服这些挑…

Microsoft Dragon Copilot:医疗AI革命开启,用语音终结手写病历时代

微软正式发布全球首个医疗行业一体化语音AI助手Microsoft Dragon Copilot,标志着临床工作流程正式迈入“人机协作”新时代。这款工具通过语音+文本混合架构,将医生口述内容实时转化为结构化病历,并深度整合电子健康记录(EHR)系统,彻底颠覆了传统手写病历模式。根据微软官…