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

leetcode刷题日记——跳跃游戏 II

[ 题目描述 ]:
在这里插入图片描述
[ 思路 ]:

  • 题目要求在一个一定能达到数组末尾的跳跃数组中(见55题 跳跃游戏),找出能够跳到末尾的最小次数
  • 要求次数最少,那肯定是选取能选步数中最大的数。也就是在当前能够达到的距离中,选择能够达到的最远的步数,即跳跃一次;然后在新的最远的距离,再次探寻最大的距离;当能够达到的最远距离超过数组长度的时候,即跳跃完毕
  • 运行如下

在这里插入图片描述

int jump(int* nums, int numsSize) {
    int jumps=0, len=0,maxlen=0;
    for (int i=0; i<numsSize-1;i++) {
        maxlen = fmax(maxlen, i+nums[i]); 
        if (i == len) {
            jumps++; 
            len = maxlen;
        }
        if(len>numsSize-1) break;
    }
    return jumps;
}

[ 优化 ]:

  • 时间复杂度O(n),空间复杂度O(1)

[ 官方题解 ]:

  • 一、反向查找出发位置,贪心de 选择距离最后一个位置最远的那个位置,也就是对应下标最小的那个位置。因此,我们可以从左到右遍历数组,选择第一个满足要求的位置。
int jump(int* nums, int numsSize) {
    int position = numsSize - 1;
    int steps = 0;
    while (position > 0) {
        for (int i = 0; i < position; i++) {
            if (i + nums[i] >= position) {
                position = i;
                steps++;
                break;
            }
        }
    }
    return steps;
}
  • 二、正向查找可到达的最大位置,即上述方法
http://www.dtcms.com/a/99766.html

相关文章:

  • 编程语言
  • 【每日论文】DINeMo: Learning Neural Mesh Models with no 3D Annotations
  • Visual Studio中创建和配置设置文件(Settings.settings) - 详细步骤指南——待调试
  • 基于springboot小说题材在线阅读平台(源码+lw+部署文档+讲解),源码可白嫖!
  • QLoRA对大模型微调
  • Ubuntu 22 Linux上部署DeepSeek R1保姆式操作详解(ollama方式)
  • 基于Elasticsearch的个性化内容推荐技术实践
  • 方案推介:80页产品经理培训PPT课件:产品调研、用户画像、用户需求的收集【文末附下载链接】
  • vue3+bpmn.js基本使用
  • 缓存击穿中的二次判断
  • 鸿蒙项目源码-仿抖音短视频-原创!原创!原创!
  • Nexus Docker 推送提示授权错误
  • 如何进行Prompt调优?
  • 【机械视觉】C#+VisionPro联合编程———【六、visionPro连接工业相机设备】
  • Spring Boot 项目引入 MCP 详细指南
  • css选择最后结尾的元素DOM
  • vue3项目配置别名
  • 将pytroch模型转为paddlelite模型并集成到android程序中
  • 【SQL】刷题记录
  • Python 查找PDF中的指定文本并高亮显示
  • leetcode刷题日记——跳跃游戏
  • vLLM 部署 InternVL2_5
  • Gogs 精简备份与恢复方案(仅SQLite数据库和配置)
  • 逻辑回归(Logistic Regression)模型的概率预测函数
  • Gateway实战(一)、网关基本了解、配置路由案例实操
  • YOLOv8环境配置及依赖安装过程记录
  • 爬虫工程师分享自动批量化获取商品评论数据的方法有哪些?
  • Linux中CP到一半不小心kill了能恢复吗?
  • SAP SD学习笔记36 - BackOrder(延期交货订单处理)
  • Stable Diffusion太慢?国内Midjourney平替方案—商用合规部署