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

贪心算法-跳跃游戏II

45.跳跃游戏II

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j]:0 <= j <= nums[i] 
i + j < n
返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]

输入:数组
输出:整型
思路

  1. 从右往左,先让position等于最右边,然后遍历数组,找到最小能到达的下标,然后更新position,直到position==0
class Solution {public int jump(int[] nums) {int position = nums.length - 1;int step = 0;while(position != 0){for(int i = 0; i < position; i++){if(i + nums[i] >= position){position = i;step++;break;}}}return step;}}
}

方法一虽然可以实现,但是时间复杂度高O(n2)

  1. 使用正向遍历,记录可以到达的最远位置
class Solution {public int jump(int[] nums) {int len = nums.length;int end = 0;int maxPosition = 0;int step = 0;for(int i = 0; i < len - 1; i++){maxPosition = Math.max(maxPosition, i + nums[i]);if(i == end){end = maxPosition;step++;}}return step;}
}

注意两点

  • 对于if(end == i)的理解
  • 对于不需要遍历到最后一个元素的理解
http://www.xdnf.cn/news/2448.html

相关文章:

  • Godot开发2D冒险游戏——第三节:游戏地图绘制
  • 来自B站-AI匠的“RAG的prompt设计指南“的部分截图
  • idea软件配置移动到D盘
  • Linux日志分析:安全运维与故障诊断全解析
  • 【PCL】实现CloudCompare的连通域点云聚类功能
  • 闭包与装饰器(python)
  • 机器学习——Seaborn练习题
  • Python教程(二)——控制流工具前半部分
  • 《代码整洁之道》第5章 格式 - 笔记
  • 第二章、在Windows上部署Dify:从修仙小说到赛博飞升的硬核指南
  • 基于 Playwright 构建小型分布式爬虫项目实战
  • SpringBoot与BookKeeper整合,实现金融级别的日志存储系统
  • 小结:BFD
  • 解决SSLError: [SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption faile的问题
  • React19 useOptimistic 用法
  • 文字光影扫过动效
  • 1999-2022年各省研究与试验发展经费内部支出数据/研发经费内部支出数据/RD经费内部支出数据
  • 鸿蒙NEXT开发正则工具类(ArkTs)
  • Qt/C++开发监控GB28181系统/设备注册/设备注销/密码认证/心跳保活/校时
  • [MCU]SRAM
  • JVM指令手册:深入理解字节码执行机制
  • 图像生成新势力:GPT-Image-1 与 GPT-4o 在智创聚合 API 的较量
  • 大数据学习栈记——Hive4.0.1安装
  • 整合 | 大模型时代:微调技术在医疗智能问答矩阵的实战应用20250427
  • 正则表达式详解
  • π0.5:带开放世界泛化的视觉-语言-动作模型
  • C++学习:六个月从基础到就业——模板编程:模板特化
  • web字符转义
  • Maven概述
  • Leetcode837.新21点