LeetCode-笔记-45.跳跃游戏II-贪心算法

给定一个非负整数数组,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

你的目标是使用最少的跳跃次数到达数组的最后一个位置。

示例:

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

说明: 假设你总是可以到达数组的最后一个位置。

本题整体思路,贪心算法;

本题跳跃思路如下图所示,找出跳的最远的路线。

查看上图,寻找最远的跳跃路线,就这一步走完与下一步最远的路线之和的最大值,浅蓝色①与深蓝色②是最开始跳跃的路线,可得②比①远。顾第一次跳到数组下标2处。同理第二次跳跃到下标6处,第三次跳跃到下标12处。

注意:重点来了

在不能一步跳跃到尾部之前上述思路是完全正确,但可以一次跳跃到尾部之后,就会多出不必要的跳跃,观察上图,下标6处应当跳到下标7值为10处预计路线最远,按理说应当跳到下标7,但下标6可以直接跳到最后,因此跳跃到下标7是不必要的跳跃。如果可以直接跳到尾部,此时应当直接跳跃值加一,返回值。

附上代码:

class Solution {public:int jump(vector<int>& nums) {int length=nums.size();//求数组长度int sum=0;for(int i=0;i<length-1;){//循环int max_jump=0;int addr=0;for(int j=1;j<=nums[i]&&(i+j)<length;++j){//跳跃,防止数组越界if((i+j)>=length-1) return ++sum;//可以直接尾部,直接返回if(max_jump<(nums[i+j]+j)){addr=j;max_jump=nums[i+j]+j;}}sum++;i=i+addr;}return sum;}
};

LeetCode-笔记-45.跳跃游戏II-贪心算法相关推荐

  1. 162. Leetcode 45. 跳跃游戏 II (贪心算法-贪心区间)

    class Solution:def jump(self, nums: List[int]) -> int:if len(nums) == 1:return 0# 记录走的最大步数.当前覆盖最远 ...

  2. [Leedcode][JAVA][第45题][跳跃游戏 II][贪心算法]

    [问题描述][Leedcode][JAVA][第45题][跳跃游戏 II] 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2.从下标为 0 跳到下标为 1 的位置 ...

  3. leetcode:45. 跳跃游戏 II【经典贪心】

    分析 已经能到达最后一个(可通过跳跃游戏1判断) 然后还是按照每次能走的区间,记录maxPos 一个个位置遍历,在能走的区间内边走边看找到下一个maxPos 然后如果当前位置i触及end(也就是上一个 ...

  4. leetcode C++ 45. 跳跃游戏 II 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后

    一.思路: 1.深度搜索,不剪枝,只能通过71多个 2.深度搜索,map存储每一个pos的count,凡是后面超过这个count,停止搜索,剪枝,最后两个也通过不了 3.O(n), 通过当前节点找到下 ...

  5. leetcode 45.跳跃游戏 II

    一.题意 给出一个非负整数数组 nums ,数组中的每个元素代表在该位置可以跳跃的最大长度.使用最少的跳跃次数到达数组的最后一个位置.假设总是可以到达数组的最后一个位置. 二.解法 贪心算法. 解法一 ...

  6. _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II 、55.跳跃游戏、45.跳跃游戏II

    _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II .55.跳跃游戏.45.跳跃游戏II 题目列表 122.买卖股票的最佳时机II 55.跳跃游戏 45 ...

  7. 代码随想录算法训练营第三十二天_第八章_贪心算法 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

    LeetCode 122.买卖股票的最佳时机II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票 ...

  8. 力扣记录:贪心算法3较难(1)区间问题——55 跳跃游戏,45 跳跃游戏II,452 用最少数量的箭引爆气球,435 无重叠区间,763 划分字母区间,56 合并区间

    本次题目 55 跳跃游戏 45 跳跃游戏II 452 用最少数量的箭引爆气球 435 无重叠区间 763 划分字母区间 56 合并区间 55 跳跃游戏 局部最优:不管每次跳多少步,取最大跳跃步数,若覆 ...

  9. LeetCode 45.跳跃游戏II

    45.跳跃游戏 II 题目描述 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. ...

  10. Leetcode 45. 跳跃游戏 II

    Leetcode 45. 跳跃游戏 II 题目 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组 ...

最新文章

  1. 学习了Python那么长的世界,有没有玩转过hello word?
  2. theme vscode 护眼_VS code 豆沙绿护眼主题
  3. 科大星云诗社动态20210205
  4. android读写文件
  5. jsp文件上传_文件上传
  6. 搭建Nginx+PHP环境
  7. kafka 消费者消息确认_Kafka整体架构图解
  8. 求生之路2联机服务器没有响应,求生之路2联机卡,为什么求生之路2联机进不去...
  9. 计算机设备维修与及日常保养,电脑主机日常的维护保养计划
  10. python程序设计基础课后答案-Python语言程序设计基础(第2版)嵩天课后答案
  11. win搭建7java环境_WIN7java环境变量搭建方法
  12. 数据分析 第十篇:分类(kNN)
  13. Powershell添加英文输入法
  14. JAVA实现排列组合
  15. JAVA 抽象类与接口
  16. 苹果笔记本MBP 玩大型游戏秒退之解決方法
  17. 网络兼职正规网站,做兼职的来看看,防止被骗!
  18. win7总是显示计算机内存不足怎么办,win7系统电脑总是提示“计算机的内存不足”的解决方法...
  19. 如何培养自己积极的心态-思维与习惯影响未来,积极的心态决定了成功的85%
  20. java用数组显示周期性波形,常见的周期性变化波形有正弦波、三角波和矩形波。...

热门文章

  1. PICRUSt2软件
  2. Linux学习4-文件系统介绍
  3. 76项!海南省崖州湾种子实验室揭榜挂帅项目立项结果公示
  4. 223.主成分分析PCA
  5. Science:亚硝酸盐氧化细菌在黑暗海洋中的主要作用
  6. 微生物组学研究的可再现性、可重现性、稳定性与普适性
  7. R语言使用gt包和gtExtras包漂亮地显示表格数据:gtExtras包的gt_hulk_col_numeric函数对单列、多列数据进行着色、使用不同的调色板(color palette)对列着色
  8. “package ‘ElemStatLearn‘ is not available for this version of R
  9. 高斯混合模型聚类实战(Gaussian Mixtures)
  10. 聚类(Clustering)定义、聚类思想及形式、距离的度量