当前位置: 首页 > news >正文

力扣刷题HOT100——跳跃游戏

给你一个非负整数数组 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. 初始化最远位置maxLength = 0,表示初始时能到达的最远位置是下标 0

  2. 遍历数组

    • 对于每个下标 i,检查是否能到达该位置:
      • 如果当前下标 i 超过了 maxLength,说明无法到达 i,直接返回 false
    • 更新最远位置:
      • 计算从当前位置 i 能跳到的最远位置:i + nums[i]
      • 将 maxLength 更新为当前值和新计算值中的较大值。
  3. 遍历结束:如果整个数组遍历完毕都没有返回 false,说明可以到达最后一个位置,返回 true

class Solution {
public:bool canJump(vector<int>& nums) {int maxLength=0;for(int i=0;i<nums.size();i++){if(i>maxLength) return false;maxLength=max(maxLength,i+nums[i]);}return true;}
};

复杂度分析

1. 时间复杂度:O(n)
  • 只需遍历一次数组,其中 n 是数组的长度。
  • 每次遍历中,更新 maxLength 的操作是常数时间 O(1)
2. 空间复杂度:O(1)
  • 只需要维护一个变量 maxLength,不使用额外的数据结构。
http://www.lryc.cn/news/598916.html

相关文章:

  • 康养休闲旅游服务虚拟仿真实训室:赋能人才培养的创新路径
  • 2025年7月23日 AI 今日头条
  • 2025最新MySQL面试题实战记录,互联网公司常问题目
  • day46day47 通道注意力
  • 高级04-Java 设计模式:常用模式详解与实战
  • 【STM32项目】智能台灯
  • 大模型Prompt优化工程
  • 将Scrapy项目容器化:Docker镜像构建的工程实践
  • 跨境支付入门~国际支付结算(稳定币)
  • 最大团--贪心例题
  • uboot FPGA调试环境搭建
  • leetcode98深度解析:验证有效的二叉搜索树
  • 基于深度学习的CT图像3D重建技术研究
  • Mac电脑开发Python(基于vs code)
  • 学习日志17 python
  • 复矩阵与共轭转置矩阵乘积及其平方根矩阵
  • 六种经典智能优化算法(PSO/GWO/WOA/HHO/DBO/SSA)无人机(UAV)三维路径规划,Matlab代码实现
  • java后端
  • C# 密封类_密封方法 (seadled 关键字)
  • 核心数据结构:DataFrame
  • 《Flutter篇第一章》基于GetX 和 Binding、Dio 实现的 Flutter UI 架构
  • C语言第四章函数
  • [明道云] -基础入门1- 什么是明道云 HAP 平台?
  • 力扣1441. 用栈操作构建数组
  • ESP32入门实战:PC远程控制LED灯完整指南
  • Ethereum: 从 1e+21 到千枚以太币:解密 Geth 控制台的余额查询
  • MC0461排队
  • 中央广播电视总台联合阿里云研究院权威发布《中国人工智能应用发展报告(2025)》:我国依旧需要大力注重人工智能人才的培养
  • 解决 WSL 中无法访问 registry-1.docker.io/v2/,无法用 docker 拉取 image
  • 【RAG优化】RAG应用中图文表格混合内容的终极检索与生成策略