LeetCode-笔记-45.跳跃游戏II-贪心算法
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-贪心算法相关推荐
- 162. Leetcode 45. 跳跃游戏 II (贪心算法-贪心区间)
class Solution:def jump(self, nums: List[int]) -> int:if len(nums) == 1:return 0# 记录走的最大步数.当前覆盖最远 ...
- [Leedcode][JAVA][第45题][跳跃游戏 II][贪心算法]
[问题描述][Leedcode][JAVA][第45题][跳跃游戏 II] 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2.从下标为 0 跳到下标为 1 的位置 ...
- leetcode:45. 跳跃游戏 II【经典贪心】
分析 已经能到达最后一个(可通过跳跃游戏1判断) 然后还是按照每次能走的区间,记录maxPos 一个个位置遍历,在能走的区间内边走边看找到下一个maxPos 然后如果当前位置i触及end(也就是上一个 ...
- leetcode C++ 45. 跳跃游戏 II 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后
一.思路: 1.深度搜索,不剪枝,只能通过71多个 2.深度搜索,map存储每一个pos的count,凡是后面超过这个count,停止搜索,剪枝,最后两个也通过不了 3.O(n), 通过当前节点找到下 ...
- leetcode 45.跳跃游戏 II
一.题意 给出一个非负整数数组 nums ,数组中的每个元素代表在该位置可以跳跃的最大长度.使用最少的跳跃次数到达数组的最后一个位置.假设总是可以到达数组的最后一个位置. 二.解法 贪心算法. 解法一 ...
- _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II 、55.跳跃游戏、45.跳跃游戏II
_28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II .55.跳跃游戏.45.跳跃游戏II 题目列表 122.买卖股票的最佳时机II 55.跳跃游戏 45 ...
- 代码随想录算法训练营第三十二天_第八章_贪心算法 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II
LeetCode 122.买卖股票的最佳时机II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格.设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票 ...
- 力扣记录:贪心算法3较难(1)区间问题——55 跳跃游戏,45 跳跃游戏II,452 用最少数量的箭引爆气球,435 无重叠区间,763 划分字母区间,56 合并区间
本次题目 55 跳跃游戏 45 跳跃游戏II 452 用最少数量的箭引爆气球 435 无重叠区间 763 划分字母区间 56 合并区间 55 跳跃游戏 局部最优:不管每次跳多少步,取最大跳跃步数,若覆 ...
- LeetCode 45.跳跃游戏II
45.跳跃游戏 II 题目描述 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. ...
- Leetcode 45. 跳跃游戏 II
Leetcode 45. 跳跃游戏 II 题目 给你一个非负整数数组 nums ,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组 ...
最新文章
- 学习了Python那么长的世界,有没有玩转过hello word?
- theme vscode 护眼_VS code 豆沙绿护眼主题
- 科大星云诗社动态20210205
- android读写文件
- jsp文件上传_文件上传
- 搭建Nginx+PHP环境
- kafka 消费者消息确认_Kafka整体架构图解
- 求生之路2联机服务器没有响应,求生之路2联机卡,为什么求生之路2联机进不去...
- 计算机设备维修与及日常保养,电脑主机日常的维护保养计划
- python程序设计基础课后答案-Python语言程序设计基础(第2版)嵩天课后答案
- win搭建7java环境_WIN7java环境变量搭建方法
- 数据分析 第十篇:分类(kNN)
- Powershell添加英文输入法
- JAVA实现排列组合
- JAVA 抽象类与接口
- 苹果笔记本MBP 玩大型游戏秒退之解決方法
- 网络兼职正规网站,做兼职的来看看,防止被骗!
- win7总是显示计算机内存不足怎么办,win7系统电脑总是提示“计算机的内存不足”的解决方法...
- 如何培养自己积极的心态-思维与习惯影响未来,积极的心态决定了成功的85%
- java用数组显示周期性波形,常见的周期性变化波形有正弦波、三角波和矩形波。...
热门文章
- PICRUSt2软件
- Linux学习4-文件系统介绍
- 76项!海南省崖州湾种子实验室揭榜挂帅项目立项结果公示
- 223.主成分分析PCA
- Science:亚硝酸盐氧化细菌在黑暗海洋中的主要作用
- 微生物组学研究的可再现性、可重现性、稳定性与普适性
- R语言使用gt包和gtExtras包漂亮地显示表格数据:gtExtras包的gt_hulk_col_numeric函数对单列、多列数据进行着色、使用不同的调色板(color palette)对列着色
- “package ‘ElemStatLearn‘ is not available for this version of R
- 高斯混合模型聚类实战(Gaussian Mixtures)
- 聚类(Clustering)定义、聚类思想及形式、距离的度量