力扣刷题 DAY_80 贪心
Leetcode45
链接:力扣 。
题目:
给定一个非负整数数组nums,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。
说明:
1 <= nums.length <= 104
0 <= nums[i] <= 1000
示例1:
输入:nums = [2,3,1,1,4]
输出:2
解释:跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。
示例2:
输入:nums = [2,3,0,1,4]
输出:2
思路:
本题比Leetcode55难了不少,但思路是相似的,还是要看最大覆盖范围。
本题要计算最小步数,那么就要想清楚什么时候步数才一定要加一呢?
贪心的思路,局部最优:当前可移动距离尽可能多走,如果还没到终点,步数再加一。整体最优:一步尽可能多走,从而达到最小步数。
思路虽然是这样,但在写代码的时候还不能真的就能跳多远跳远,那样就不知道下一步最远能跳到哪里了。所以真正解题的时候,要从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最小步数!需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖。
如果移动下标达到了当前这一步的最大覆盖最远距离了,还没有到终点的话,那么就必须再走一步来增加覆盖范围,直到覆盖范围覆盖了终点。
参考代码:
class Solution {
public:int jump(vector<int>& nums) {if (nums.size() == 1) {return 0;}int curRange = 0, nextRange = 0;int result = 0;for (int i = 0; i < nums.size(); i++) {nextRange = max(i + nums[i], nextRange);if (nextRange >= nums.size() - 1) {result++;break;}if (i == curRange) {result++;curRange = nextRange;}}return result;}
};
力扣刷题 DAY_80 贪心相关推荐
- LeetCode力扣刷题——简单易懂的贪心算法
贪心 一.算法解释 采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的. 贪心算法问题需要满足的条件: (1)最优子结构:规模较大的问题的解由规模较小的子问题的解组成,规模较 ...
- 力扣刷题pdf(java版本,内含暗黑版和光明版),都在这里了
BAT大佬力扣刷题pdf,都在这里了! 相信很多小伙伴刷题的时候面对力扣上近两千道题目,感觉无从下手! 我找了很久,今天终于让找到了Java版leetcode算法题解笔记,强烈建议先按照本篇介绍pd ...
- 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!
开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊.再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了. 不 ...
- 《剑指Offer》力扣刷题笔记(03-10)
<剑指Offer>力扣刷题笔记(03-10) 最近确实有点闲,想在进组搬砖之前找点有意义的事干,于是,就开始刷<剑指Offer>.<程序员面试金典>等书上的题目,也 ...
- 力扣刷题之二叉树的层序遍历
Welcome to you, 每日一刷系列 二叉树的层序遍历 二叉树的层序遍历II 二叉树的右视图 ...
- 『力扣刷题』5275_找出井字棋的获胜者 解题代码
LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5275_找出井字棋的获胜者 * 5275. 找出井字棋的获胜者 显示英文描述* 用户通过次数0* 用户尝试次数0* ...
- 『力扣刷题』5276_不浪费原料的汉堡制作方案 解题代码
LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5276_不浪费原料的汉堡制作方案 * 5276. 不浪费原料的汉堡制作方案 显示英文描述* 用户通过次数212* 用 ...
- 『力扣刷题』5238_找出给定方程的正整数解 解题代码
html: embed_local_images: true embed_svg: true offline: true toc: undefined print_background: false ...
- 力扣刷题全局变量WA,局部变量AC的问题
力扣刷题全局变量WA,局部变量AC问题 题目 原因 题目 golang力扣leetcode 1219.黄金矿工 原因 今天在刷题的时候,遇到一个现象,本地跑测试全部通过,一提交就错错错,非常离谱 然后 ...
- 力扣刷题-前k个高频元素
力扣刷题-前k个高频元素 题目: 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 1: 输入: nums = [1,1,1,2 ...
最新文章
- 随机文件处理函数应用
- Stack around the variable 'date' was corrupted.
- 一个 Dubbo 服务启动要两个小时
- Hbase WALs(HLog) 文件存储,查看
- C语言CASE如何用switch,switch case 中如何使用枚举
- wsgiref — WSGI Utilities and Reference Implementation¶
- 【ElasticSearch】ElasticSearch 中使用衰减函数来完美你的搜索结果
- android 怎么获取app 字体颜色,Android APP使用自定义字体实现方法
- 图像哈希二进制字符串相互转换以及flatten()的用法
- AutoCAD2020简体中文语言包
- RFID全面梳理(超高频)
- 游戏项目导出AAB包上传谷歌提示超过150M的解决方案
- c语言简单的对话机器人软件,示例:聊天机器人
- 模电_第六章_负反馈电路
- 范莎学院 计算机,加拿大范莎学院
- CF831A-Unimodal Array(单峰阵列)
- 用于信号处理的Xilinx FPGA XC7K325T PCIeX8 FMC处理板卡
- 资质认证|棱镜七彩成功通过CMMI 3级认证,研发能力获国际权威机构认可!
- 2018SCUACM Training1 贪心
- 步进电机和伺服电机优缺点