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

【leetcode】 45.跳跃游戏 ||

如果我们「贪心」地进行正向查找,每次找到可到达的最远位置,就可以在线性时间内得到最少的跳跃次数。

例如,对于数组 [2,3,1,2,4,2,3],初始位置是下标 0,从下标 0 出发,最远可到达下标 2。下标 0 可到达的位置中,下标 1 的值是 3,从下标 1 出发可以达到更远的位置,因此第一步到达下标 1。

从下标 1 出发,最远可到达下标 4。下标 1 可到达的位置中,下标 4 的值是 4 ,从下标 4 出发可以达到更远的位置,因此第二步到达下标 4。

在具体的实现中,我们维护当前能够到达的最大下标位置,记为边界。我们从左到右遍历数组,到达边界时,更新边界并将跳跃次数增加 1。

在遍历数组时,我们不访问最后一个元素,这是因为在访问最后一个元素之前,我们的边界一定大于等于最后一个位置,否则就无法跳到最后一个位置了。如果访问最后一个元素,在边界正好为最后一个位置的情况下,我们会增加一次「不必要的跳跃次数」,因此我们不必访问最后一个元素。

作者:力扣官方题解
代码:

int jump(int* nums, int numsSize) 
{int max = 0;int i = 0,steps = 0;int end=0;for (i = 0; i < numsSize-1; i++){	max = max < (nums[i] + i) ? (nums[i] + i) : max;//最远能到达的位置if (i==end){end = max;steps++;}}return steps;
}


http://www.mrgr.cn/news/41474.html

相关文章:

  • Study-Oracle-10-ORALCE19C-RAC集群搭建
  • vite中sass警告JS API过期
  • Linux:深入理解冯诺依曼结构与操作系统
  • Python 从入门到实战32(数据库MySQL)
  • 严重 Zimbra RCE 漏洞遭大规模利用(CVE-2024-45519)
  • 单目3d重建DUSt3R 笔记
  • JavaScript while循环语句
  • 【鸿蒙开发】探索HarmonyNext开发:常用注解详解与实战
  • 解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
  • vue2老项目打包优化:优化脚本生成的代码
  • Conditional Generative Adversarial Nets
  • Java try-catch结构异常处理机制与 IllegalArgumentException 详解
  • docker 部署 filebeat 采集日志导入到elasticsearch 设置pipeline
  • ADRC与INDI的关系
  • 过滤器 Filter 详解
  • C++【类和对象】(再探构造函数、类型转换与static成员)
  • 如何选择与运用编程工具提升工作效率的秘密武器
  • 基于物理信息神经网络(PINN)求解Burgers方程(附PyTorch源代码)
  • 进程和线程之间的通用方式
  • [20241002] OpenAI融资文件曝光,ChatGPT年收入涨4倍,月费5年内翻倍