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

LeetCode 第 45 题“跳跃游戏 II”

好的,我来帮你解释一下 LeetCode 第 45 题“跳跃游戏 II”,这是一道经典的贪心算法题目。

题目描述:
给你一个非负整数数组 nums,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。

举个例子:
假设输入数组是 [2,3,1,1,4],你可以这样跳跃:

  1. 从位置 0 跳到位置 1(跳了 1 步)。
  2. 从位置 1 跳到位置 4(跳了 1 步)。
    所以最少需要 2 次 跳跃。

解题思路:
这个问题可以用贪心算法来解决。贪心算法的核心思想是在每一步都选择最优的决策,从而达到全局最优解。

  1. 定义变量:

    • end:当前能跳到的最远位置。
    • farthest:在当前跳跃范围内,能跳到的最远位置。
    • jumps:记录跳跃的次数。
  2. 遍历数组:

    • 从第一个位置开始,遍历数组。
    • 对于每个位置,计算从这个位置能跳到的最远位置(i + nums[i]),并更新 farthest
    • 当遍历到当前能跳到的最远位置(end)时,更新 endfarthest,并增加跳跃次数(jumps++)。
  3. 结束条件:

    • end 超过或等于数组的最后一个位置时,停止遍历。

具体步骤:

  1. 初始化 end = 0farthest = 0jumps = 0
  2. 遍历数组:
    • 对于每个位置 i,更新 farthest = max(farthest, i + nums[i])
    • 如果 i == end,说明当前跳跃范围已经用完,需要进行下一次跳跃:
      • 更新 end = farthest
      • 增加跳跃次数 jumps++
  3. end 超过或等于数组的最后一个位置时,返回 jumps

代码示例(Python):

def jump(nums):n = len(nums)end = 0farthest = 0jumps = 0for i in range(n - 1):  # 不需要遍历最后一个位置farthest = max(farthest, i + nums[i])if i == end:  # 当前跳跃范围用完jumps += 1end = farthestif end >= n - 1:  # 如果已经可以到达或超过最后一个位置breakreturn jumps

关键点:

  • 贪心策略:每次选择当前范围内能跳到的最远位置,这样可以保证用最少的跳跃次数。
  • 边界条件:注意数组的边界,避免越界。

希望这个解释对你有帮助!如果你还有其他问题,随时问我哦。

http://www.xdnf.cn/news/6832.html

相关文章:

  • Spring之Bean的初始化 Bean的生命周期 全站式解析
  • PyTorch实现CrossEntropyLoss示例
  • AIGC在电商行业的应用:革新零售体验
  • 计算机网络(1)——概述
  • Docker入门指南:镜像、容器与仓库的核心概念解析
  • Redis的Hot Key自动发现与处理方案?Redis大Key(Big Key)的优化策略?Redis内存碎片率高的原因及解决方案?
  • STM32 | FreeRTOS 递归信号量
  • C# 深入理解类(静态函数成员)
  • golang中的反射示例
  • 大模型AI原生应用效果测试与评估视频课来啦
  • Python多进程编程执行任务
  • sudo apt update是什么意思呢?
  • (3)python爬虫--Xpath
  • 2022河南CCPC(前四题)
  • pip升级或者安装报错怎么办?
  • 致敬经典 << KR C >> 之打印输入单词水平直方图和以每行一个单词打印输入 (练习1-12和练习1-13)
  • 最小二乘法拟合直线,用线性回归法、梯度下降法实现
  • SLAM定位常用地图对比示例
  • 【深度学习新浪潮】大模型时代,我们还需要学习传统机器学习么?
  • 计算机视觉与深度学习 | Python实现EMD-VMD-LSTM时间序列预测(完整源码和数据)
  • React Flow 节点事件处理实战:鼠标 / 键盘事件全解析(含节点交互代码示例)
  • 跨国应用程序的数据存储方案常见的解决方案
  • R语言空间数据处理入门教程
  • Redis——过期删除策略和内存
  • golang读、写、复制、创建目录、删除、重命名,文件方法总结
  • AI517 AI本地部署 docker微调(失败)
  • Baklib知识中台构建企业智能服务新引擎
  • 板凳-------Mysql cookbook学习 (二)
  • 【新能源轻卡行驶阻力模型参数计算实战:从国标试验到续航优化】
  • Linux | mdadm 创建软 RAID