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

力扣 hot100 Day71

45. 跳跃游戏 II

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]

每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说,如果你在索引 i 处,你可以跳转到任意 (i + j) 处:

  • 0 <= j <= nums[i] 且
  • i + j < n

返回到达 n - 1 的最小跳跃次数。测试用例保证可以到达 n - 1

class Solution {
public:int jump(vector<int>& nums) {int n = nums.size();int jumps = 0;int current_end = 0;int farthest = 0;for (int i = 0; i < n - 1; ++i) {farthest = max(farthest, i + nums[i]);if (i == current_end) {jumps++;current_end = farthest;if (current_end >= n - 1) {break;}}}        return jumps;}
};

处理逻辑是,在上一题的基础上,记录当前的跳跃次数以及当前所能达到的最远点,只有在达到最远点后,才增加跳跃次数。

这里的次数,其实记录的是到达current_end所需最小次数,所以终止条件是,current_end大于等于n-1。

很容易陷入的牛角尖是,每一步都走最远未必次数最少。这是正确的,但这里的算法逻辑是,在当前跳跃范围内,尽可能探索下一步所能到达的最远范围,只有在不得不跳时,才次数加一。

在 jumps++时,算法并不关心“具体跳到哪里”,而是通过维护 current_end和 farthest隐式决定了跳跃策略​

http://www.lryc.cn/news/619108.html

相关文章:

  • 【1】Transformers快速入门:自然语言处理(NLP)是啥?
  • 机器学习第十课之TF-IDF算法(红楼梦文本分析)
  • LangChain SQLChatMessageHistory:SQL数据库存储聊天历史详解
  • 混合精度加快前向传播的速度
  • 计算机视觉(8)-纯视觉方案实现端到端轨迹规划(模型训练+代码)
  • MDD-Net:通过相互Transformer进行多模态抑郁症检测
  • 【沧海拾昧】使用LibUsbDotNet进行Windows/Ubuntu跨平台串口管理
  • XGBoost 的适用场景以及与 CNN、LSTM 的区别
  • 循环神经网络(RNN)全面解析
  • 文件IO(1)
  • 【doris基础与进阶】3-Doris安装与部署
  • UE5多人MOBA+GAS 42、提高头像画质
  • 方格网法土方计算不规则堆体
  • 常用Linux指令:Java/MySQL/Tomcat/Redis/Nginx运维指南
  • 安路Anlogic FPGA下载器的驱动安装与测试教程
  • 京东方 DV133FHM-NN1 FHD13.3寸 工业液晶模组技术档案
  • C++方向知识汇总(四)
  • UserController类讲解
  • Milvus入门:开源向量数据库,解锁大模型时代的高效检索
  • iptables -L 显示无目标链规则,但是iptables-save显示仍存在链规则原因分析
  • LeetCode189~191、198~214题解
  • 力扣top100(day01-05)--矩阵
  • Golang 语言中 Context 的使用方式
  • 【Python 爬虫】Playwright 多浏览器支持(Chromium/Firefox/WebKit)
  • 云原生高级——nginx
  • Nginx 高级配置
  • 明远智睿T113-i核心板:工业设备制造的“破局者”
  • 10-docker基于dockerfile自动制作镜像
  • 机器学习——DBSCAN
  • imx6ull-驱动开发篇20——linux互斥体实验