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

【Hot 100】45. 跳跃游戏 II

目录

  • 引言
  • 跳跃游戏 II
    • dp解题
    • 贪心解题

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:算法专栏
  • 💥 标题:【Hot 100】45. 跳跃游戏 II
  • ❣️ 寄语:书到用时方恨少,事非经过不知难!

引言

跳跃游戏 II

  • 🎈 题目链接:
  • 🎈 做题状态:

dp解题

思路:
遍历nums数组,并且记录当前位置可以跳跃到的地方的最小步数,通过遍历 nums[i] 的值来更新每个位置的步数,并且需要记录最小步数。其实可以有一个优化技巧,就是记录minSteps数组此时更新到的最右侧边界索引。如果当前位置能超越这个索引就更新后面的步数值,如果超不过就不需要更新。

class Solution {
public:int jump(vector<int>& nums) {vector<int> minSteps(nums.size(), INT_MAX);minSteps[0] = 0;// 遍历nums,并更新每个位置跳跃所需要的最短距离。for(int i = 0; i < nums.size()-1; ++i){int step = nums[i]; // 记录当前可以跳跃的步数for (int j = i + 1; j <= i + step && j < nums.size(); ++j){minSteps[j] = min(minSteps[j],  minSteps[i] + 1); }}return minSteps[nums.size()-1];}
};

贪心解题

贪心的思路理解起来还是有点费力的。

在每一次跳跃时,总是选择当前跳跃范围内能跳最远的位置,作为下一次跳跃的边界,以此保证跳跃次数最少。

虽然跳跃是“在到达边界 end 的时候触发”,但能跳多远,取决于之前所有点探索的最远跳跃距离 farthest;

换句话说:你起跳的位置未必是边界点本身,而是边界范围内跳得最远的那个位置。

👉 这正体现了贪心策略的精髓:不回头、只选择当前最优。

class Solution {
public:int jump(vector<int>& nums) {int steps = 0;       // 最终要返回的跳跃次数int end = 0;         // 当前这一跳的边界(跳到这就得起跳)int farthest = 0;    // 从当前范围中能跳到的最远位置// 注意:我们只遍历到 nums.size() - 2,因为最后一跳跳到终点时无需再跳for (int i = 0; i < nums.size() - 1; ++i){// 更新当前能跳到的最远位置farthest = max(farthest, i + nums[i]);// 如果到达当前跳跃的边界,就必须跳一次if (i == end){++steps;         // 起跳!end = farthest; // 重新设置下一跳的边界}}return steps;}
};
http://www.lryc.cn/news/2396655.html

相关文章:

  • Codeforces Round 1026 (Div. 2) C. Racing
  • Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)
  • oracle sql 语句 优化方法
  • Python数学可视化——显函数、隐函数及复杂曲线的交互式绘图技术
  • 代码随想录打卡|Day51 图论(dijkstra(堆优化版)精讲、Bellman_ford 算法精讲)
  • 【深度剖析】流处理系统性能优化:解决维表JOIN、数据倾斜与数据膨胀问题
  • PostgreSQL优化实践:从查询到架构的性能提升指南
  • AI入门——AI大模型、深度学习、机器学习总结
  • 【AI论文】论文转海报:迈向从科学论文到多模态海报的自动化生成
  • 智慧零工平台前端开发实战:从uni-app到跨平台应用
  • 【Linux】基础文件IO
  • opencv调用模型
  • 由浅入深一文详解同余原理
  • ESP-IDF 离线安装——同时存在多个版本以及进行版本切换的方法
  • android 上位机调试软件-安卓串口 com ttl 调试——仙盟创梦IDE
  • python打卡day42
  • XMOS以全新智能音频及边缘AI技术亮相广州国际专业灯光音响展
  • Playwright 测试框架 - Node.js
  • 机器学习有监督学习sklearn实战二:六种算法对鸢尾花(Iris)数据集进行分类和特征可视化
  • vr中风--数据处理模型搭建与训练2
  • 鸿蒙next系统以后会取代安卓吗?
  • PolyGen:一个用于 3D 网格的自回归生成模型 论文阅读
  • 约瑟夫问题 洛谷 - P1996
  • 系统思考:成长与投资不足
  • 快手可灵视频V1.6模型API如何接入免费AI开源项目工具
  • 数学建模期末速成 最短路径
  • 【Netty系列】实现HTTP文件服务器
  • Java开发经验——阿里巴巴编码规范实践解析7
  • 权威认证与质量保障:第三方检测在科技成果鉴定测试中的核心作用
  • 混和效应模型在医学分析中的应用