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

力扣-贪心-45 跳跃游戏

思路

利用上一题思路先判断每一个点是否可以到达终点,构建bool数组,然后从0开始更新当前可以到达的最大值,更新这个最大值,知道这个最大值大于下标范围即可,每更新一次相当于跳跃一次,需要注意的是更新条件

  1. 从当前点可以跳到的最大范围往前剋是遍历
  2. 该点满足可以跳到重点
  3. 当前的比记录跳的范围更远
  4. 记录的还没跳到终点(因为当前记录已经可以跳到重点,就不需要更新了,直接跳到终点就可以)

代码

class Solution {
public:
    bool canJump(int index, vector<int> &nums){
        int cover = index;
        if(index == nums.size() - 1) return true;
        for(int i = index; i <= cover;i++){
            cover = max(cover, i + nums[i]);
            if(cover >= nums.size() - 1) return true;
        }
        return false;
    }

    int jump(vector<int>& nums) {
        vector<bool> isArriveEnd(nums.size(), false);
        for(int i = 0; i < nums.size(); i++){
            isArriveEnd[i] = canJump(i, nums);
        }

        int res = 0, cur = 0;
        for (cur = 0; cur < nums.size() - 1;) {
            int cover = cur + nums[cur];
            int curMaxAndArrive = cover;
            int length = nums.size() - 1;
            for (int j = cover; j > cur && j < nums.size(); j--) {
                if (isArriveEnd[j] && j + nums[j] > curMaxAndArrive +  nums[curMaxAndArrive]
                        && curMaxAndArrive +  nums[curMaxAndArrive] < length) {
                    curMaxAndArrive = j;
                }
            }
            res++;
            cur = curMaxAndArrive;
        }
        return res;
    }
};


http://www.kler.cn/a/558496.html

相关文章:

  • MyBatis XML映射文件中的批量插入和更新
  • 【LLM】R1复现项目(SimpleRL、OpenR1、LogitRL、TinyZero)持续更新
  • 我的世界地下城DLC开发的第二天
  • Kafka安装
  • Linux:进程的认识
  • win32汇编环境,窗口程序中使用菜单示例四
  • 【java】就近原则
  • vscode@右键文件夹或文件vscode打开一键配置
  • for循环可遍历但不可以修改列表原因分析
  • 物联网常见协议基础学习
  • 【软考】【2025年系统分析师拿证之路】【啃书】第十三章 系统设计(十四)
  • CSS基础(盒子模型的组成、内容溢出、隐藏元素的方式、样式的继承、元素的默认样式、布局技巧、元素之间的空白问题、行内块元素的幽灵空白问题)
  • 利用 AI 大模型驱动企业智能化转型:Cherry Studio 与 Anything LLM 的应用探索
  • 海康威视摄像头ISUP(原EHOME协议) 摄像头实时预览springboot 版本java实现,并可以在浏览器vue前端播放(附带源码)
  • deepseek云端部署及结合本地知识库(结合api调用)可视化界面应用
  • 【拓展】二进制的原码、补码、反码及相互转换方式
  • Linux系统管理与编程01:准备工作
  • 深度学习(3)-TensorFlow入门(梯度带)
  • `pip freeze > requirements.txt` 命令
  • Python 错误和异常处理