力扣-贪心-45 跳跃游戏

news/2025/2/24 19:54:38

思路

利用上一题思路先判断每一个点是否可以到达终点,构建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.niftyadmin.cn/n/5864763.html

相关文章

嵌入式八股文(五)硬件电路篇

一、名词概念 1. 整流和逆变 &#xff08;1&#xff09;整流&#xff1a;整流是将交流电&#xff08;AC&#xff09;转变为直流电&#xff08;DC&#xff09;。常见的整流电路包括单向整流&#xff08;二极管&#xff09;、桥式整流等。 半波整流&#xff1a;只使用交流电的正…

k8s学习记录:环境搭建(基于Kubeadmin)

一、前言 工欲善其事&#xff0c;必先利其器。学习k8s肯定离不开环境的搭建&#xff0c;今天这篇文章将从0到1 搭建一个k8s集群。k8s集群的搭建方式也有很多&#xff0c;例如学习环境的minikube、使用kubeadmin工具安装&#xff0c;再或则是难度最大的通过二进制文件一个一个组…

【Qt】可爱的窗口关闭确认弹窗实现

文章目录 ​​​实现思路界面构建交互逻辑实现颜色渐变处理圆形部件绘制 代码在主窗口的构造函数中创建弹窗实例ExitConfirmDialog 类代码ColorCircleWidget 类代码 今天在Qt实现了这样一个可互动的窗口&#xff08;上图由于录屏工具限制没有录制到鼠标&#xff09; ​​​实现…

【Viewer.js】vue3封装图片查看器

效果图 需求 点击图片放大可关闭放大的 图片 下载 cnpm in viewerjs状态管理方法 stores/imgSeeStore.js import { defineStore } from pinia export const imgSeeStore defineStore(imgSeeStore, {state: () > ({showImgSee: false,ImgUrl: ,}),getters: {},actions: {…

spring中关于Bean的复习(IOC和DI)

文章目录 1.spring程序开发步骤1.1 导入spring开发的基本包坐标1.2 编写Dao接口和实现类1.3 创建spring核心配置文件1.4 在spring配置文件中配置UserDaoImpl1.5 使用Spring的Api获得Bean实例 2. Bean实例化的三种方式2.1 无参构造方法实例化2.2 工厂静态方法实例化2.3 工厂实例…

Java 的 HttpClient 中使用 POST 请求传递参数

在 Java 的 HttpClient 中&#xff0c;如果使用 POST 请求传递参数&#xff0c;有两种常见方式&#xff1a; 通过请求体传递&#xff08;通常是 JSON 或 XML 格式&#xff0c;适用于 RPC&#xff09;。通过表单参数传递&#xff08;类似于 HTML 表单提交&#xff0c;使用键值对…

linux下软件安装、查找、卸载

目录 常见安装方式有三种&#xff1a; 1.源码安装。 2.rpm安装方式。 3.yum/apt工具级别安装。 对于前两种安装方式&#xff0c;因为软件可能有依赖关系&#xff08;安装的软件依赖于某些库&#xff0c;而这些库又依赖于某些库&#xff0c;这些都需要手动安装&#xff09;…

超级详细Spring AI运用Ollama大模型

大模型工具Ollama 官网:https://ollama.com/ Ollama是一个用于部署和运行各种开源大模型的工具; 它能够帮助用户快速在本地运行各种大模型&#xff0c;极大地简化了大模型在本地运行的过程。用户通过执行几条命令就能在本地运行开源大模型&#xff0c;如Lama 2等; 综上&#x…