leetcode_55. 跳跃游戏

55. 跳跃游戏

题目描述:给你一个非负整数数组 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 <= nums.length <= 10^4
  • 0 <= nums[i] <= 10^5

代码思路:

  1. 初始化dp 数组,用来记录从索引 0 到当前索引 i 可以跳跃的最大距离
  2. 首先将 dp[0] 初始化为 nums[0],因为从索引 0 出发最多可以跳 nums[0] 个步骤。
  3. 定义一个变量 max,用来记录当前可以跳跃的最大距离。初始化为 dp[0]
  4. 遍历数组 nums 的其余部分,对于每个索引 i:
    1. 如果 i 已经超出了当前可以跳跃的范围(i > max),说明无法到达该位置,直接返回 false
    2. dp[i]=Math.max(i+nums[i],dp[i-1]): 更新 dp[i] 为从索引 i-1 出发最远可以跳到的距离和从索引 i 出发最远可以跳到的距离的最大值。
    3. 更新 max 为当前可以跳跃的最大距离。
    4. 剪枝:如果 max 已经大于等于 nums.length - 1,说明可以从索引 0 跳到最后一个索引,直接返回 true
  5. 如果整个循环结束,仍然无法从索引 0 跳到最后一个索引,返回 false

时间复杂度为 O(n),空间复杂度为 O(n),其中 n 是数组 nums 的长度。它使用动态规划的方法,利用了 dp 数组来记录当前可以跳跃的最大距离,从而避免了重复计算,达到了较高的效率。

class Solution {public boolean canJump(int[] nums) {int[] dp = new int[nums.length];dp[0] = nums[0];int max = dp[0];if (max >= nums.length - 1) {return true;}for (int i = 1; i < nums.length; i++) {if (i > max) {return false;}dp[i] = Math.max(i + nums[i], dp[i - 1]);max = Math.max(dp[i], max);if (max >= nums.length - 1) {return true;}}return false;}
}

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

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

相关文章

javaer快速入门 goweb框架 gin

gin 入门 前置条件 安装环境 配置代理 # 配置 GOPROXY 环境变量&#xff0c;以下三选一# 1. 七牛 CDN go env -w GOPROXYhttps://goproxy.cn,direct# 2. 阿里云 go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct# 3. 官方 go env -w GOPROXYhttps://goproxy.…

鸿蒙内核源码分析——(自旋锁篇)

本篇说清楚自旋锁 读本篇之前建议先读系列篇 进程/线程篇. 内核中哪些地方会用到自旋锁?看图: 概述 自旋锁顾名思义&#xff0c;是一把自动旋转的锁&#xff0c;这很像厕所里的锁&#xff0c;进入前标记是绿色可用的&#xff0c;进入格子间后&#xff0c;手一带&#xff0c…

10分钟学会LVM逻辑卷

华子目录 前言认识LVMLVM基本概念LVM整体流程LVM管理命令pvs&#xff0c;vgs&#xff0c;lvs命令pvs基本用法选项示例 vgs基本用法选项示例 lvs基本用法 pvcreate&#xff0c;vgcreate&#xff0c;lvcreate命令pvcreate示例 vgcreate基本用法示例选项 lvcreate基本用法示例 pvr…

Python爬虫入门教程(非常详细)适合零基础小白

一、什么是爬虫&#xff1f; 1.简单介绍爬虫 爬虫的全称为网络爬虫&#xff0c;简称爬虫&#xff0c;别名有网络机器人&#xff0c;网络蜘蛛等等。 网络爬虫是一种自动获取网页内容的程序&#xff0c;为搜索引擎提供了重要的数据支撑。搜索引擎通过网络爬虫技术&#xff0c;将…

【电路笔记】-无源衰减器总结

无源衰减器总结 文章目录 无源衰减器总结1、概述2、L-型无源衰减器设计3、T-型无源衰减器设计4、桥接 T 型衰减器设计5、π型无源衰减器设计无源衰减器是一个纯电阻网络,可用于控制输出信号的电平。 1、概述 无源衰减器是一种纯电阻网络,用于削弱或“衰减”传输线的信号电平…

golang中defer的执行时间是什么时候?是在return前还是return后执行的?

在Go语言中&#xff0c;defer语句指定的函数调用会在包含它的函数即将完成时执行&#xff0c;具体来说&#xff1a; 执行时间&#xff1a;defer语句指定的函数在包含它的函数的返回值被确定后执行&#xff0c;但在该函数真正的返回操作之前执行。这意味着defer执行时&#xff0…

Element UI中报dateObject.getTime is not a function解决方法~

1、错误信息。 2、该报错原因是Element UI中日期组件的校验规则是type: "date",而一般我们从后台拿到的数据是字符串型的&#xff0c;不满足预期&#xff0c;就会报错。 3、解决方法。 去掉日子组件中的type: "date"校验规则即可。 rules: {newName: [{…

设计模式之Data Access Object

在软件开发中&#xff0c;应用程序通常需要与数据库进行交互&#xff0c;执行数据的读取、插入、更新和删除等操作。为了实现这些功能&#xff0c;开发者通常会使用特定的设计模式来组织代码&#xff0c;提高可维护性和可扩展性。Data Access Object&#xff08;DAO&#xff09…

【Python爬虫】技术深度探索与实践

目录 引言 第一部分&#xff1a;Python爬虫基础 1.1 网络基础 1.2 Python爬虫基本流程 第二部分&#xff1a;进阶技术 2.1 动态网页抓取 2.2 异步编程与并发 2.3 反爬虫机制与应对 第三部分&#xff1a;实践案例 第四部分&#xff1a;法律与道德考量 第五部分&#x…

EasyCVR视频汇聚平台:深度解析GB/T 28181协议下的视频资源整合与应用

随着安防技术的快速发展和智慧城市建设的推进&#xff0c;视频监控系统作为公共安全、城市管理、企业运营等领域的重要基础设施&#xff0c;其重要性和应用范围不断扩大。在这一过程中&#xff0c;GB/T 28181作为国家标准中关于视频监控设备通信协议的规范&#xff0c;正逐渐受…

C2M商业模式分析与运营平台建设解决方案(四)

C2M商业模式以消费者需求驱动生产制造&#xff0c;实现个性化与效率的双赢。本解决方案将围绕构建智能化、数据驱动的运营平台&#xff0c;通过精准把握市场需求、优化生产流程、强化供应链管理&#xff0c;打造高效、敏捷、柔性的C2M运营体系&#xff0c;助力企业快速响应市场…

python算法优化——functools.lru_cache

1. 优化算法的思想 当算法的复杂度较高时&#xff0c;常见的优化策略包括&#xff1a; 减少重复计算&#xff1a;通过缓存结果避免相同输入的重复计算。这种方法常用在递归和动态规划问题中。合理使用数据结构&#xff1a;根据具体问题&#xff0c;选择合适的数据结构&#x…

华为AR1220配置GRE隧道

1.GRE隧道的配置 GRE隧道的配置过程,包括设置接口IP地址、配置GRE隧道接口和参数、配置静态路由以及测试隧道连通性。GRE隧道作为一种标准协议,支持多协议传输,但不提供加密,并且可能导致CPU资源消耗大和调试复杂等问题。本文采用华为AR1220路由器来示例说明。 配置…

【电路笔记】-桥接 T 型衰减器

桥接 T 型衰减器 文章目录 桥接 T 型衰减器1、概述2、桥接 T 型衰减器示例 13、可变桥接 T 型衰减器4、完全可调衰减器5、可切换桥接 T 型衰减器Bridged-T 衰减器是另一种电阻衰减器设计,它是标准对称 T 垫衰减器的变体。 1、概述 顾名思义,桥接 T 形衰减器具有一个额外的电…

Cesium模型制作,解决Cesium加载glb/GLTF显示太黑不在中心等问题

Cesium模型制作&#xff0c;解决Cesium加载glb/GLTF显示太黑不在中心等问题 QQ可以联系这里&#xff0c;谢谢

Spring SSM框架--MVC

SSM框架–Mybatis 一、介绍 Spring 框架是一个资源整合的框架&#xff0c;可以整合一切可以整合的资源&#xff08;Spring 自身和第三方&#xff09;&#xff0c;是一个庞大的生态&#xff0c;包含很多子框架&#xff1a;Spring Framework、Spring Boot、Spring Data、Spring…

红与黑-计算可到达的瓷砖数

红与黑-计算可到达的瓷砖数 http://noi.openjudge.cn/ch0205/1818/ 思路&#xff1a; 1.从起点出发&#xff0c;往四个方向走 2.在范围内 路径通可以走&#xff0c;没走过&#xff0c;递归往下走 并记录走过步数 #include<bits/stdc.h> using namespace std;char s;…

C++高性能编程:ZeroMQ vs Fast-DDS发布-订阅模式下性能对比与分析

文章目录 0. 引言1. 目标&#xff1a;ZeroMQ与Fast-DDS性能对比2. ZeroMQ vs Fast-DDS - 延迟基准测试2.1 一对一发布-订阅延迟2.2 一对多发布-订阅延迟 3. ZeroMQ vs Fast-DDS - 吞吐量基准测试4. 方法论5. 结论6. 参考 0. 引言 高要求的分布式系统催生了对轻量级且高性能中间…

C#MVC返回DataTable到前端展示。

很久没写博客了&#xff0c;闭关太久&#xff0c;失踪人口回归&#xff0c;给诸位道友整点绝活。 交代下背景&#xff1a;要做一个行转列的汇总统计&#xff0c;而且&#xff0c;由于是行转列&#xff0c;列的数量不固定&#xff0c;所以&#xff0c;没法使用正常的SqlSugar框…

el-tree树状控件,定位到选中的节点的位置

效果图 在el-tree 控件加 :render-content"renderContent" 在掉接口的方法中 实际有用的是setTimeout 方法和this.$refs.xxxxxx.setCheckedKeys([industrycodeList]) if(res.data.swindustrylist.length>0){res.data.swindustrylist.forEach(item > {industry…