首页 > 编程语言 >跳跃游戏II(贪心算法)

跳跃游戏II(贪心算法)

时间:2025-01-04 22:22:16浏览次数:1  
标签:farthest nums int 位置 next II 算法 跳跃 贪心

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

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

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

返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]

 

示例 1:

输入: nums = [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。
     从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。

示例 2:

输入: nums = [2,3,0,1,4]
输出: 2

 

注意:

在遍历数组时,我们不访问最后一个元素,这是因为在访问最后一个元素之前,我们的边界一定大于等于最后一个位置,否则就无法跳到最后一个位置了。如果访问最后一个元素,在边界正好为最后一个位置的情况下,我们会增加一次「不必要的跳跃次数」,因此我们不必访问最后一个元素。

class Solution {
public:
    int jump(vector<int>& nums) {
       int n = nums.size();

        int steps = 0;    // 跳跃次数 

        int farthest = 0;      // 本次跳跃的最远位置
        int next_farthest = 0; // 下次跳跃的最远位置

        for (int i = 0; i < n - 1; ++i) {
            next_farthest = max(next_farthest, i + nums[i]); // 下次能跳多远

            if (i == farthest) {
                ++steps; // 本次跳跃到的所有位置都检查过了,跳跃一次(不知道跳到哪里)
                farthest = next_farthest; // 更新下一次跳跃的最远位置,准备下一次跳跃
            }
        }

        return steps;
    }
};

 

标签:farthest,nums,int,位置,next,II,算法,跳跃,贪心
From: https://www.cnblogs.com/yueshengd/p/18652580

相关文章

  • 算法提高 校门外的树
    时间限制:C/C++1000MS,其他语言2000MS内存限制:C/C++512MB,其他语言1024MB难度:困难分数:100 OI排行榜得分:14(0.1*分数+2*难度)描述某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位......
  • 【无人机协同】遗传算法GA同构异构无人机UAV协同搜索【含Matlab源码 10916期】
    ......
  • java基于Spark的温布尔登特色赛赛事数据分析预测及算法实现
    目录系统实现截图开发核心技术介绍技术栈核心代码部分展示操作手册视频演示/源码获取系统实现截图开发核心技术介绍springboot+Element-UI+vue本系统采用MVVM模式,开发框架使用SpringBoot框架,开发工具使用IDEA,VisualStudioCode,Web服务器使用Tomcat,数据库服......
  • 机器学习算法的分类
    一、按学习方式分类1.监督学习(SupervisedLearning)(1)定义:使用已标记的数据进行训练,每个输入数据都有对应的输出标签。模型学习输入与输出之间的映射关系。按以上可以分为以下两种:分类任务:将输入分配到预定义的类别(如0-9数字识别)。回归任务:预测连续数值(如房价预测)。(2)常......
  • 跳跃游戏(贪心算法)
    给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 1:输入:nums=[2,3,1,1,4]输出:true解释:可以先跳1步,从下标0到达下标......
  • 买卖股票的最佳时机(贪心算法)
    给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任......
  • (2-5-02)目标检测与分割:SLAM定位与地图构建(02) Deep SLAM算法+图优化算法
    2.5.2 DeepSLAM算法DeepSLAM(SimultaneousLocalizationandMapping)是一种结合深度学习技术和SLAM技术的方法,旨在通过使用深度神经网络来改进SLAM系统的性能。SLAM是一种用于在未知环境中同时估计相机(或传感器)的位置和构建地图的技术。在DeepSLAM中,深度学习模型通常用......
  • C语言数据结构与算法(栈和队列)
    1.栈1.栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(LastInFirstOut)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除......
  • 带你从入门到精通——机器学习(九. 聚类算法)
    建议先阅读我之前的博客,掌握一定的机器学习前置知识后再阅读本文,链接如下:带你从入门到精通——机器学习(一.机器学习概述)-CSDN博客带你从入门到精通——机器学习(二.KNN算法)-CSDN博客带你从入门到精通——机器学习(三.线性回归)-CSDN博客带你从入门到精通——机器学习(四.逻......
  • Spark职位信息推荐系统 协同过滤推荐算法 Echarts可视化 Django框架 简历投递 大数据
    博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌>......